Ich habe an diesem jetzt für 2 Stunden gerade gearbeitet und viele Fragen gelesen, aber ich kann nicht sehen, wo oder warum mein OleDbCommand nicht so funktioniert, wie es sollte.
Ich schrieb diesen Code als eine Zusammenführung aller Fragen und Antworten die ich gesehen habe:Wie werden parametrisierte Abfragen korrekt verwendet?
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);
}
}
Doch diese mir den „kein Wert für einen oder mehr geforderten parameteres gegeben“ Fehler gibt. Wenn ich versuche, die jetzt kommentierte Zeile
und kommentieren Sie die andere, das Ergebnis ist genau das gleiche.
Aber wenn ich beide Zeilen benutze liest der Leser aber gibt mir jeden Eintrag in meiner Tabellenspalte und nicht nur die gewünschte Übereinstimmung mit pair.Value.
Die KeyValuePair ist nichts anderes als ein Tupel einer String-ID aus meinem Programm als Schlüssel und die entsprechende ID in der Datenbank als Wert.
Ich bin dankbar für jede Hilfe oder Anregung.
Ich fürchte, es nicht für mich :(die ExecuteReader() Funktion noch mit der gleichen Nachricht nicht. Ich habe vergessen, kann hinzufügen, dass es sich um eine Microsoft Access-Datenbank – Pio
@Pio es so sein kann, dass 'pair.Value' ist null? –
nein es ist nicht, die Prüfung mit dem Debugger zeigt, dass es eine Zeichenfolge enthält, bevor es fehlschlägt und die Zuweisung zu Parametern [0] .Wert funktioniert auch ... – Pio