在OleDb的帮助下尝试从数据库中读取数据时出现异常

时间:2013-08-27 06:02:55

标签: c# oledbdatareader oledbexception

您好我正在尝试使用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吗?

1 个答案:

答案 0 :(得分:3)

您需要在select语句中包含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);