0

您好我正在尝试使用 OleDb 连接数据库,但是当我想从那里读取数据并在之后使用 Read() 命令时

cmd.Parameters.Add("@name", TextBox1.Text);
cmd.Parameters.Add("@password", TextBox2.Text);
cmd.ExecuteNonQuery();
System.Data.OleDb.OleDbDataReader rdr = cmd.ExecuteReader();
while (rdr.Read()) 
{                      
    string istifadeciAd = (string)rdr.GetString(1);
    string istifadeciParol = (string)rdr.GetString(2);
}

在 String istifadeciAd 和 istifadeciParol 中,由于 IndexoutofRange,GetString 出现错误。但是我们不需要使用列索引调用 GetString 吗?

4

1 回答 1

3

您需要在您的选择语句中有超过 2 个选择列才能获得rdr.GetString(2)

像下面的东西

select id, istifadeciAd, istifadeciParol from Table1 where name =? and password =?

请注意,索引是从零开始的

因此,如果您只选择istifadeciAd, istifadeciParol列,则需要将其读取为

string istifadeciAd = rdr.GetString(0);
string istifadeciParol = rdr.GetString(1);

而且您不需要将结果转换为string,因为它正在返回string

我认为您还需要更改参数添加代码,

cmd.Parameters.AddWithValue("@name", TextBox1.Text);
cmd.Parameters.AddWithValue("@password", TextBox2.Text);
于 2013-08-27T06:10:47.007 回答