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