I have the following code which connects to a database and stores the data into a dataset.
What I need to do now is get a single value from the data set (well actually its two the first row column 4 and 5)
OdbcConnection conn = new OdbcConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString;
DataSet ds = new DataSet();
OdbcDataAdapter da = new OdbcDataAdapter("SELECT * FROM MTD_FIGURE_VIEW1", conn);
da.Fill(ds)
So, I need to get two specific items and store them into ints, the psudo code would be
int var1 = ds.row1.column4
int var2 = ds.row1.column5
Any ideas on how I can do this?
Also, can some one shed a light on data tables too as this may be related to how I'm going about doing this.
You can do like...
If you want to access using ColumnName
Int32 First = Convert.ToInt32(ds.Tables[0].Rows[0]["column4Name"].ToString());
Int32 Second = Convert.ToInt32(ds.Tables[0].Rows[0]["column5Name"].ToString());
OR, if you want to access using Index
Int32 First = Convert.ToInt32(ds.Tables[0].Rows[0][4].ToString());
Int32 Second = Convert.ToInt32(ds.Tables[0].Rows[0][5].ToString());
The DataSet object has a Tables array. If you know the table you want, it will have a Row array, each object of which has an ItemArray array. In your case the code would most likely be
int var1 = int.Parse(ds.Tables[0].Rows[0].ItemArray[4].ToString());
and so forth. This would give you the 4th item in the first row. You can also use Columns instead of ItemArray and specify the column name as a string instead of remembering it's index. That approach can be easier to keep up with if the table structure changes. So that would be
int var1 = int.Parse(ds.Tables[0].Rows[0]["MyColumnName"].ToString());
I prefer to use something like this:
int? var1 = ds.Tables[0].Rows[0].Field<int?>("ColumnName");
or
int? var1 = ds.Tables[0].Rows[0].Field<int?>(3); //column index
int var1 = int.Parse(ds.Tables[0].Rows[0][3].ToString());
int var2 = int.Parse(ds.Tables[0].Rows[0][4].ToString());
int intVar = (int)ds.Tables[0].Rows[0][n]; // n = column index