2011-06-14 44 views
10

我有以下代码连接到数据库并将数据存储到数据集中。.NET - 如何从数据集中检索特定项目?

我现在需要做的是让从数据集中的单个值(当然实际上它的两个第一行的列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 

任何想法,我怎么能做到这一点?

另外,是否有人可以在数据表上发表看法,因为这可能与我如何去做这件事有关。

回答

22

你可以这样做......

如果你想使用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.0000)我将如何改变为int# – c11ada 2011-06-14 16:12:18

+0

在代码中我已将其转换为Int,您必须看到值4而不是4.0000;调试并检查变量值。 – 2011-06-14 16:13:46

+0

我得到以下错误{“输入字符串的格式不正确。”} – c11ada 2011-06-14 16:17:20

0
int var1 = int.Parse(ds.Tables[0].Rows[0][3].ToString()); 
int var2 = int.Parse(ds.Tables[0].Rows[0][4].ToString()); 
+0

它会返回第4和第5行的数据。此代码不正确。 – 2011-06-14 16:06:40

+0

您正在返回整行并尝试将其解析为int。 – 2011-06-14 16:08:00

+0

是的,你是对的,对不起 – 2011-06-14 16:20:43

4

DataSet对象有一个Tables数组。如果你知道你想要的表,它将有一个Row数组,其中的每个对象都有一个ItemArray数组。在你的情况下,代码很可能是

int var1 = int.Parse(ds.Tables[0].Rows[0].ItemArray[4].ToString()); 

等等。这会给你第一行的第四项。您也可以使用Columns而不是ItemArray,并将列名称指定为字符串,而不是记住它的索引。如果表格结构发生变化,那么这种方法可以更容易跟上。因此,这将是

int var1 = int.Parse(ds.Tables[0].Rows[0]["MyColumnName"].ToString()); 
+1

他需要第四和第五列的价值,而不是第四和第五排。 – 2011-06-14 16:11:27

+0

@穆罕默德 - 谢谢 – 2011-06-14 16:13:12

2

我喜欢用这样的东西:

int? var1 = ds.Tables[0].Rows[0].Field<int?>("ColumnName"); 

int? var1 = ds.Tables[0].Rows[0].Field<int?>(3); //column index 
0
int intVar = (int)ds.Tables[0].Rows[0][n]; // n = column index 
相关问题