2015-04-19 5 views
0

Я хочу получить все строки, где Status походит на offen. Но каждый раз, когда я выполняю следующий код, все записи возвращаются без фильтрации из базы данных.C# sqlite - как и параметр с считывателем

dgv_protokoll является примером DataGridView.

SQLiteConnection sqlconnection = new SQLiteConnection("Data Source=" + datenbankpfad()); 
sqlconnection.Open(); 

SQLiteCommand sqlcmd = new SQLiteCommand("SELECT * FROM Telefonprotokoll WHERE Status LIKE @wert", sqlconnection); 
sqlcmd.Parameters.Add(new SQLiteParameter("@wert", "offen%")); 

SQLiteDataReader sqlreader = sqlcmd.ExecuteReader(); 
if (sqlreader.HasRows) 
    while (sqlreader.Read()) 
    { 
     int dbwert_id = sqlreader.GetInt32(0); 
     string dbwert_zeit = sqlreader.GetString(sqlreader.GetOrdinal("Zeit")); 
     string dbwert_eingangAusgang = sqlreader.GetString(sqlreader.GetOrdinal("EingangAusgang")); 
     string dbwert_liegenschaft = sqlreader.GetString(sqlreader.GetOrdinal("Liegenschaft")); 
     string dbwert_name = sqlreader.GetString(sqlreader.GetOrdinal("Name")); 
     string dbwert_mieterVermieter = sqlreader.GetString(sqlreader.GetOrdinal("MieterVermieter")); 
     string dbwert_telefon = sqlreader.GetString(sqlreader.GetOrdinal("Telefon")); 
     string dbwert_grund = sqlreader.GetString(sqlreader.GetOrdinal("Grund")); 
     string dbwert_maßnahme = sqlreader.GetString(sqlreader.GetOrdinal("Maßnahme")); 
     string dbwert_wiedervorlage = sqlreader.GetString(sqlreader.GetOrdinal("wiedervorlage")); 
     string dbwert_bearbeiter = sqlreader.GetString(sqlreader.GetOrdinal("Bearbeiter")); 
     string dbwert_status = sqlreader.GetString(sqlreader.GetOrdinal("Status")); 

     dgv_protokoll.Rows.Add(dbwert_id, dbwert_zeit, dbwert_eingangAusgang, dbwert_liegenschaft, dbwert_name, dbwert_mieterVermieter, dbwert_telefon, dbwert_grund, dbwert_maßnahme, dbwert_wiedervorlage, dbwert_bearbeiter, dbwert_status); 
     int dgv_protokollRows = dgv_protokoll.Rows.Count; 
     lb_anzahlEintraege.Text = "Anzahl der Einträge: " + dgv_protokollRows; 
    } 

sqlconnection.Close(); 
sqlcmd.Dispose(); 
sqlconnection.Dispose(); 
GC.Collect(); 

UPDATE:

Он работает, и я нашел проблему. Другой метод записывает строки в datagrid и переопределяет содержимое из приведенного выше кода. Но когда я добавляю еще один параметр, команда SQL не работает. Это не дает мне результата.

SQLiteCommand sqlcmd = new SQLiteCommand("SELECT * FROM Telefonprotokoll WHERE @spalte LIKE @wert", sqlconnection); 
sqlcmd.Parameters.Add(new SQLiteParameter("@spalte", "Status")); 
sqlcmd.Parameters.Add(new SQLiteParameter("@wert", "offen%")); 

ответ

0

Я предполагаю, что статус является строкой.

но изменение SQlLiteCommand к:

SQLiteCommand sqlcmd = new SQLiteCommand("SELECT * FROM Telefonprotokoll WHERE Status LIKE '@wert'", sqlconnection); 
+0

Спасибо за ваш ответ, но это не сработало. – phil

Смежные вопросы