Solved

dataset.fieldbyname().asstring

Posted on 2004-10-13
6
2,697 Views
Last Modified: 2008-02-01
In Delphi, you use dataset to run a query, like select * from atable.
then you can use dataset.fieldbyname('AFieldName').asString (or as DateTime etc.) to get the field's value.

But I find in C#, you can only use fields' index to get the value rather than using field's name. So if you change your select fields order or insert a new field in the select, you have to chnage a lot of statements.

Is there a way use field's name like Delphi in C#?
0
Comment
Question by:petershaw8
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
6 Comments
 
LVL 5

Expert Comment

by:tomasX2
ID: 12303776
dataSet.Tables[0].Rows[nRowNumber]["ColumnName"].ToString();

0
 
LVL 3

Expert Comment

by:Realmrat
ID: 12304313
              string connectionString = "my conn string";

               string commandString = "SELECT * FROM mytable";

               OdbcDataAdapter adapter = new OdbcDataAdapter(commandString,connectionString);

               DataSet data = new DataSet();
               adapter.Fill (data);

               // Loop for each record in the dataset
               foreach( DataRow row in data.Tables[0].Rows )
               {
                     mycombobox.Items.Add( row["myColumnName"] );
               }

Puts all the fields into a dropdown box.  Dunno if that helps any.  =]  Same thing as above almost.

 - Joe
0
 

Author Comment

by:petershaw8
ID: 12314246
For tomasX2  solution, I am not sure if it works for a little bit complicated sql statement, like
select a.aCol1,
         b.bCol1,
        (select cCol2 from cTablen where cCol1 = aCol1) as cCol2
from aTable a, bTable b

In this case, I guess dataSet.Tables[0] regers aTable, dataSet.Tables[1] refers bTable, but how about  cCol2?

For Joe's solution, Does the  row["myColumnName"]  always returns a string? and if the field is type of DateTime, then you need convert it fromstring to datetime?


Peter
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 3

Expert Comment

by:Realmrat
ID: 12316260
The row[index] returns an object, so you can cast it to it's original value.

 - Joe
0
 
LVL 3

Expert Comment

by:Realmrat
ID: 12316521
Here's a little form in ASP.NET you can test with.  Shows how to interact with object values from the row[index] feature ... I was bored.  =]

 - Joe

                                                                  Page:
|-------------------------------------------------------------------------------------------------------------

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="EE.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>WebForm1</title>
        <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
        <meta content="C#" name="CODE_LANGUAGE">
        <meta content="JavaScript" name="vs_defaultClientScript">
        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    </HEAD>
    <body>
        <form id="Form1" method="post" runat="server">
            <table align="center">
                <tr>
                    <td><asp:datagrid id="DataGrid1" runat="server" Width="100%"></asp:datagrid></td>
                </tr>
                <tr>
                    <td align="center"><asp:button id="GetDateButton" runat="server" Text="Get Long Date"></asp:button><asp:button id="GetTimeButton" runat="server" Text="Get Short Time"></asp:button></td>
                </tr>
                <tr>
                    <td><br>
                        <br>
                        <asp:Label id="MessageLabel" runat="server" Font-Bold="True"></asp:Label>
                        <br>
                        <asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList></td>
                </tr>
            </table>
        </form>
    </body>
</HTML>


                                                                  Code:
|-------------------------------------------------------------------------------------------------------------

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.Odbc;
using System.Data.SqlTypes;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace EE
{
      /// <summary>
      /// Summary description for WebForm1.
      /// </summary>
      public class WebForm1 : System.Web.UI.Page
      {
        protected DataTable data;
        protected System.Web.UI.WebControls.DataGrid DataGrid1;
        protected System.Web.UI.WebControls.Button GetDateButton;
        protected System.Web.UI.WebControls.Label MessageLabel;
        protected System.Web.UI.WebControls.DropDownList DropDownList1;
        protected System.Web.UI.WebControls.Button GetTimeButton;
        protected DataView  dataView;
            private void Page_Load(object sender, System.EventArgs e)
            {
            if (Session["TestData"] == null)
            {
                BuildTable();
            }
            else
                data = (DataTable)Session["TestData"];

            dataView = new DataView(data);
            dataView.Sort = "Item";
            if (!IsPostBack)
                BindList();
            }

        private void BindList()
        {
            DataGrid1.DataSource = dataView;
            DataGrid1.DataBind();
        }

        private void BuildTable()
        {
           
            data = new DataTable();
            data.Columns.Add(new DataColumn("Qty", typeof(string)));
            data.Columns.Add(new DataColumn("Item", typeof(string)));
            data.Columns.Add(new DataColumn("Price", typeof(string)));
            // Can also Use OdbcType.DateTime, SqlDateTime, etc
            data.Columns.Add(new DataColumn("Date", typeof(DateTime)));
            Session["DL3_ShoppingCart"] = data;

            // first load -- prepopulate with some data
            for (int i=1; i<5; i++)
            {
                DataRow dr = data.NewRow();
                dr[0] = ((int)((i%2)+1)).ToString();
                dr[1] = "Item " + i.ToString();
                dr[2] = ((double)(1.23 * (i+1))).ToString();
                dr[3] = DateTime.Now.AddDays((int)(2*(i+30)));
                data.Rows.Add(dr);
            }
        }

            #region Web Form Designer generated code
            override protected void OnInit(EventArgs e)
            {
                  //
                  // CODEGEN: This call is required by the ASP.NET Web Form Designer.
                  //
                  InitializeComponent();
                  base.OnInit(e);
            }
            
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {    
            this.GetDateButton.Click += new System.EventHandler(this.GetDateButton_Click);
            this.GetTimeButton.Click += new System.EventHandler(this.GetTimeButton_Click);
            this.Load += new System.EventHandler(this.Page_Load);

        }
            #endregion

        private void GetDateButton_Click(object sender, System.EventArgs e)
        {
            try
            {
                foreach(DataRow row in data.Rows)
                {
                    DateTime myDate = (DateTime) row["date"];
                    DropDownList1.Items.Add(myDate.ToLongDateString());
                }
            }
            catch(Exception exc)
            {
                MessageLabel.Text = exc.Message;
            }
        }

        private void GetTimeButton_Click(object sender, System.EventArgs e)
        {
            try
            {
                foreach(DataRow row in data.Rows)
                {
                    DateTime myDate = (DateTime) row["date"];
                    DropDownList1.Items.Add(myDate.ToShortTimeString());
                }
            }
            catch(Exception exc)
            {
                MessageLabel.Text = exc.Message;
            }
        }
      }
}
0
 
LVL 3

Accepted Solution

by:
Realmrat earned 125 total points
ID: 12316534
As you can see, I stole some of the code from the ASP.NET quickstarts ... I missed an edit line!

            data.Columns.Add(new DataColumn("Date", typeof(DateTime)));
      ->  Session["DL3_ShoppingCart"] = data;

Hahaha  =]

 - Joe
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

749 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question