我没有执行while循环

本文关键字:while 循环 执行 | 更新日期: 2023-09-27 18:15:37

我看不出哪里出错了。我想从数据库表中检索一条记录并给出它们。我的表中有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);

我没有执行while循环

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没有什么可读的。然而,我不明白为什么你没有得到一个错误,当你运行,告诉你,你不能转换一个文本框控件为字符串。

首先,你进入了循环,因为你的查询没有返回任何结果,其次,你可能想尝试在这个查询中添加一些参数,像这样:

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

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

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

我认为你可以更新如下

OleDbCommand cmd = new OleDbCommand("SELECT * FROM pwd Where Title = '"+textBox2。文本 +",反对);