[IWE] C# ODBCReader questions
Christian Conrad
iwe@warhead.org.uk
Sat, 13 Jan 2007 00:27:25 +0200 (EET)
Guys,
So what you're saying, Critter, is that the Table object has a property Columns which is an array of objects of type DataColumn, and that each such element in turn has a property ColumnName?
Two questions occur: Critter, wouldn't it almost have been quicker to type that, than finding and pasting that example? ;-) And Barry, don't you have *any* bloody documentation that says the same thing?
Note that I'm not necessarily blaming you, Barry; for all I know, your C# docs really might suck so badly. Had you been using Delphi, selecting your Table [Query, DataSet, whatever] object and pressing F1 for help would have told you exactly that.
The things you poor suc^H^H^Husers of lesser environments have to put up with...
A- and be-musedly,
Sir Cyclic
Chris Rathman <Chris.Rathman@tx.rr.com> wrote:
> Don't have time to explain, but here's code that should have the effect
> you want (see the iterate over columns):
>
> System.Data.SqlClient.SqlConnection Db;
> System.Data.SqlClient.SqlDataAdapter Da;
> System.Data.DataSet Ds;
> System.Data.DataTable Dt;
> System.Data.SqlClient.SqlCommand Cmd;
> System.Data.SqlClient.SqlDataReader Rs;
>
> string connectionStr = "Server=.; Database=NorthWind;
> Integrated Security=sspi";
> string commandStr;
>
> // open up a database connection
> Db = new System.Data.SqlClient.SqlConnection(connectionStr);
> Db.Open();
>
> // create a table
> commandStr = "CREATE TABLE TestCSharp(" +
> " TestCD CHAR(2) NOT NULL PRIMARY
> KEY," +
> " Description VARCHAR(80) NOT NULL)";
> Cmd = new System.Data.SqlClient.SqlCommand(commandStr, Db);
> Cmd.CommandType = System.Data.CommandType.Text;
> Rs = Cmd.ExecuteReader();
> Rs.Close();
>
> // example using DataAdapter (sans SqlConnection)
> commandStr = "SELECT * FROM TestCSharp";
> Da = new System.Data.SqlClient.SqlDataAdapter(commandStr,
> connectionStr);
> Ds = new System.Data.DataSet();
> Da.Fill(Ds, "Test");
> Dt = Ds.Tables[0];
> // iterate over the columns
> foreach (System.Data.DataColumn col in Dt.Columns)
> {
> string s = col.ColumnName;
> }
> // iterate over the rows
> foreach (System.Data.DataRow row in Dt.Rows)
> {
> System.Console.WriteLine(row["TestCD"] + " " +
> row["Description"]);
> }
>
> // drop the table
> commandStr = "DROP TABLE TestCSharp";
> Cmd = new System.Data.SqlClient.SqlCommand(commandStr, Db);
> Cmd.CommandType = System.Data.CommandType.Text;
> Rs = Cmd.ExecuteReader();
> Rs.Close();
>
> // close the database connection
> Db.Close();
>
>
> Chris.
> Barry Roomberg wrote:
> > On Friday 12 January 2007 11:52, Chris Rathman wrote:
> >
> >> You access it either way. Rs["Example"] or Rs[n]. Accessing by index
> >> is faster since it doesn't have to do a dictionary search.
> >>
> >
> > You misunderstand.
> > I don't KNOW the field names at that point.
> > This is the result of a "select *".
> > And my goal is to assign them the a hash, by field name.
> > So, is there a way of getting the list of field names in it?
> >
> >
> >> Chris.
> >>
> >> Barry Roomberg wrote:
> >>
> >>> Since I can get the count of fields, and I can loop throught that, is
> >>> there any what, given a numeric index, to determine the name of the
> >>> field? This would enable generaric setup / assign code.
> >>>
> >>> On Friday 12 January 2007 11:43, Chris Rathman wrote:
> >>>
> >>>> I've used OleDbDataReader and SqlDataReader in the past, but I'm not
> >>>> sure of the particular type for ODBC? I put together some notes on C#
> >>>> that might be useful (see the section on databases):
> >>>>
> >>>> http://www.angelfire.com/tx4/cus/notes/csharp-syntax.html
> >>>>
> >>>> In general, I could have something like:
> >>>>
> >>>> ... bunch of code to set up Command....
> >>>>
> >>>> OleDbDataReader Rs = Cmd.ExecuteReader();
> >>>> Rs.Read();
> >>>> while (Rs.Read())
> >>>> {
> >>>> string example = (string)Rs["Example"];
> >>>> }
> >>>>
> >>>> So, the answer is likely that you want to use the associative array that
> >>>> corresponds to the data reader object.
> >>>>
> >>>> Chris.
> >>>>
> >>>> Barry Roomberg wrote:
> >>>>
> >>>>> If I do a "select *" in an ODBC connection, and then have the reader
> >>>>> pulling the data, how can I pull the assoicated field name from the
> >>>>> reader array? _______________________________________________
> >>>>> IWE mailing list
> >>>>> IWE@warhead.org.uk
> >>>>> http://lists.warhead.org.uk/mailman/listinfo/iwe
> >>>>>
> >>>> _______________________________________________
> >>>> IWE mailing list
> >>>> IWE@warhead.org.uk
> >>>> http://lists.warhead.org.uk/mailman/listinfo/iwe
> >>>>
> >>> _______________________________________________
> >>> IWE mailing list
> >>> IWE@warhead.org.uk
> >>> http://lists.warhead.org.uk/mailman/listinfo/iwe
> >>>
> >> _______________________________________________
> >> IWE mailing list
> >> IWE@warhead.org.uk
> >> http://lists.warhead.org.uk/mailman/listinfo/iwe
> >>
> > _______________________________________________
> > IWE mailing list
> > IWE@warhead.org.uk
> > http://lists.warhead.org.uk/mailman/listinfo/iwe
> >
> >
>
> _______________________________________________
> IWE mailing list
> IWE@warhead.org.uk
> http://lists.warhead.org.uk/mailman/listinfo/iwe