我一直在這工作了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);
}
}
然而,這給我的錯誤「爲一個或多個需要Parameteres給沒有價值」。如果我嘗試現在評論線
command.Parameters.Add(new OleDbParameter("@ID", pair.Value));
並評論其他,結果是完全相同的。
但是,如果我使用這兩行讀者讀取,但給我我的表列中的每個條目,而不僅僅是與pair.Value所需的匹配。
KeyValuePair只不過是我的程序中字符串id的一個元組,作爲一個鍵以及它在數據庫中的相應ID作爲值。
我很感激任何幫助或建議。
恐怕不適合我:(給ExecuteReader()函數仍然失敗,同樣的信息。我可能忘了補充一點,它是一個Microsoft Access數據庫 – Pio
@Pio可以說,它是使'pair.Value'爲空? –
不,它不是,用調試器檢查顯示它包含一個字符串befor它失敗,並賦值給參數[0] .Value也可以工作... – Pio