Solved

dataset.fieldbyname().asstring

Posted on 2004-10-13
6
2,679 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
  • 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
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Extention Methods in C# 3.0 by Ivo Stoykov C# 3.0 offers extension methods. They allow extending existing classes without changing the class's source code or relying on inheritance. These are static methods invoked as instance method. This…
Summary: Persistence is the capability of an application to store the state of objects and recover it when necessary. This article compares the two common types of serialization in aspects of data access, readability, and runtime cost. A ready-to…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…

863 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

Need Help in Real-Time?

Connect with top rated Experts

27 Experts available now in Live!

Get 1:1 Help Now