我现在已经连续工作了2个小时,并仔细阅读了很多这样的问题,但是我看不到我的OleDbCommand在哪里或为什么没有按照应有的方式工作。
我将此代码编写为我所看到的所有问题和答案的合并:
using (var connection = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + @"data source= *path to mdp*"))
{
try
{
connection.Open();
foreach (KeyValuePair<string, string> pair in dictionary)
{
string query = "SELECT * FROM mytable WHERE db_id=?";
var command = new OleDbCommand(query, connection);
//command.Parameters.Add(new OleDbParameter("@ID", pair.Value));
command.Parameters.Add("?", OleDbType.BSTR).Value = pair.Value;
var reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader[0].ToString());
}
reader.Close();
}
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
但这给了我“没有为一个或多个必需参数给出值”错误。如果我尝试现在评论的行
command.Parameters.Add(new OleDbParameter("@ID", pair.Value));
并发表评论,结果是完全一样的。
但是,如果我同时使用这两行,则阅读器会读取数据,但会给我表列中的每个条目,而不仅仅是与pair.Value匹配的内容。
KeyValuePair只是一个来自我程序的字符串ID作为键的元组,而它在数据库中的对应ID作为值的元组。
感谢您的帮助或建议。
这为我工作:
string query = "SELECT * FROM mytable WHERE db_id=@ID";
var command = new OleDbCommand(query, connection);
command.Parameters.Add("@ID", OleDbType.BSTR);
command.Parameters[0].Value = pair.Value;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句