我没有执行while循环

时间:2013-05-27 12:35:39

标签: c# sql ms-access-2003

我无法弄清楚错误是什么。我想从数据库表中检索一条记录并将它们分发出来。我的桌子上有9个字段。第二个字段的数据是搜索字。同一数据可以有多个记录。如果有很多,那么它必须一次显示每条记录。如何编码呢?​​

我使用C#.Net作为逻辑,使用Ms Access作为后端(数据库)

这是我的代码:

string[] arr = new string[9];
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\PassWordSaver\Passwords.mdb;Persist Security Info=True;");
con.Open();
OleDbCommand cmd = new OleDbCommand("SELECT * FROM pwd Where Title = '"+textBox2+"'", con);
OleDbDataReader reader = cmd.ExecuteReader();
reader.Read();
//while (reader.Read())
//{
    for (int i = 0; i < 9; i++)
    {
       arr[i] = reader.GetValue(i).ToString();
       MessageBox.Show("The New data is " + arr[i] + ".", "Created", MessageBoxButtons.OK);
    }
//}
reader.Close();
MessageBox.Show("Data Added Successfully.  " + arr[2] + " is the user name.", "Created", MessageBoxButtons.OK);

3 个答案:

答案 0 :(得分:3)

OleDbCommand cmd = new OleDbCommand("SELECT * FROM pwd Where Title = '"+textBox2+"'", con);

应阅读:

OleDbCommand cmd = new OleDbCommand("SELECT * FROM pwd Where Title = '"+textBox2.Text+"'", con);

您没有进入while循环的原因是开始时不满足条件。 myReader没有任何内容可供阅读。但是,我不明白为什么在运行时不会出现错误,告诉您无法将文本框控件转换为字符串。

答案 1 :(得分:0)

首先,你进入循环是因为你的查询没有返回任何结果,其次你可能想尝试在这个查询上放一些参数,如下所示:

OleDbCommand cmd = new OleDbCommand("SELECT * FROM pwd Where Title = ?", con);
cmd.Parameters.Add(textBox2.Text); // I assume you mean textBox2.Text

答案 2 :(得分:0)

可能会是一个愚蠢的答案,但我认为你试图通过从textbox.Text属性中获取值来发送查询。但是在代码上你试图直接获得Textbox

OleDbCommand cmd = new OleDbCommand(“SELECT * FROM pwd Where Title ='”+ textBox2 +“'”,con);

我认为你可以更新如下

OleDbCommand cmd = new OleDbCommand(“SELECT * FROM pwd Where Title ='”+ textBox2。 Text +“'”,con);