我有以下代码连接到数据库并将数据存储到数据集中。
我现在需要做的是从数据集中获取单个值(实际上它是两个第一行第4列和第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)
所以,我需要获取两个特定的项目并将它们存储到整数中,psudo代码将是
int var1 = ds.row1.column4
int var2 = ds.row1.column5
关于我如何做到这一点的任何想法?
此外,有些人也可以了解数据表,因为这可能与我将如何做到这一点有关。
答案 0 :(得分:27)
你可以这样做......
如果您想使用ColumnName
Int32 First = Convert.ToInt32(ds.Tables[0].Rows[0]["column4Name"].ToString());
Int32 Second = Convert.ToInt32(ds.Tables[0].Rows[0]["column5Name"].ToString());
或者,如果您想使用Index
Int32 First = Convert.ToInt32(ds.Tables[0].Rows[0][4].ToString());
Int32 Second = Convert.ToInt32(ds.Tables[0].Rows[0][5].ToString());
答案 1 :(得分:4)
DataSet对象有一个Tables数组。如果你知道你想要的表,它将有一个Row数组,每个对象都有一个ItemArray数组。在您的情况下,代码很可能是
int var1 = int.Parse(ds.Tables[0].Rows[0].ItemArray[4].ToString());
等等。这将为您提供第一行中的第4项。您还可以使用Columns而不是ItemArray,并将列名指定为字符串,而不是记住它的索引。如果表结构发生变化,那么这种方法可以更容易跟上。那就是
int var1 = int.Parse(ds.Tables[0].Rows[0]["MyColumnName"].ToString());
答案 2 :(得分:2)
我更喜欢使用这样的东西:
int? var1 = ds.Tables[0].Rows[0].Field<int?>("ColumnName");
或
int? var1 = ds.Tables[0].Rows[0].Field<int?>(3); //column index
答案 3 :(得分:0)
int var1 = int.Parse(ds.Tables[0].Rows[0][3].ToString());
int var2 = int.Parse(ds.Tables[0].Rows[0][4].ToString());
答案 4 :(得分:0)
int intVar = (int)ds.Tables[0].Rows[0][n]; // n = column index