-2

我无法弄清楚是什么错误。我想从数据库表中检索一条记录并将它们发送出去。我的表中有 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);
4

3 回答 3

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 没有任何内容可供阅读。但是,我不明白为什么您在运行时不会收到错误消息,告诉您无法将文本框控件转换为字符串。

于 2013-05-27T12:43:01.563 回答
0

可能这将是一个愚蠢的答案,但我认为您正试图通过从 textbox.Text 属性中获取值来发送查询。但是在您尝试直接获取文本框的代码上

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

我想你可以更新如下

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

于 2013-05-27T12:42:49.153 回答
0

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

OleDbCommand cmd = new OleDbCommand("SELECT * FROM pwd Where Title = ?", con);
cmd.Parameters.Add(textBox2.Text); // I assume you mean textBox2.Text
于 2013-05-27T12:42:18.113 回答