2016-07-16 4 views
0

Ich versuche, eine Liste von einer SQLite-Datenbank beizutreten. Ich möchte die Datumswerte erhalten, wenn das bestimmte Gerät ausgewählt ist. Beispiel: Maschine A ist ausgewählt, sie erstellt eine Liste vom 25.05.15, 30.05.15, 20.05.15. Mit dem Join, den ich benutze, möchte ich den Spaltennamen, aber nicht die Werte ausspucken. Es ist ein mehrdeutiger Spaltenfehler mit SQLite.Erstellen Sie eine Liste von SQLite-Datenbank Join-Funktion

enter image description here

void fill_listbox_Dates() 
    { 
     string Machine_Name_listbox = listboxMachines.SelectedItem.ToString(); 

     string databaseString = "datasource=LinacDatabase.db"; 

     string DateQuery = "SELECT Date FROM Machines as E1 INNER JOIN Date as E2 ON Machines.Machine= " + Machine_Name_listbox + ""; 

     SQLiteConnection conDatabase = new SQLiteConnection(databaseString); 
     SQLiteCommand cmdDataBase = new SQLiteCommand(DateQuery, conDatabase); 
     SQLiteDataReader ReadDate; 

     try 
     { 

      conDatabase.Open(); 
      ReadDate = cmdDataBase.ExecuteReader(); 

      while (ReadDate.Read()) 
      { 
       List<string> Dates = ReadDate.GetString(1); 

       listboxDates.Items.Add(Dates); 
      } 

     } 
+0

Wenn Sie eine 'Join' machen, wo ist Ihre zweite Tabelle? – Eris

+0

Das ist, was mich ein wenig verwirrt hat. Es ist nur eine Tabelle, aber ich möchte nur eine Spalte mit den Daten für Maschine A erstellen. Also habe ich einfach einen Join für die gleiche Tabelle gemacht, um zu sehen, ob es funktioniert. – LitteringAnd

+0

Ihre Abfrage sieht sehr seltsam aus, ich denke, Sie möchten wahrscheinlich "Datum von Maschinen auswählen, wo Maschine = '" + Machind_Name_listbox + "'"; – Sconibulus

Antwort

0

So war das Problem, dass ich einen Apostroph Wert um zu doppelte Anführungszeichen des Machine_Name_List Feld Zeichenfolge einzufügen hatte. Andernfalls wird der sqlite-Datenleser annehmen, dass der Wert ein Spaltenname ist. So sollte es lesen,

string DateQuery = "SELECT Date FROM Machines as E1 INNER JOIN Date as E2 ON Machines.Machine= '" + Machine_Name_listbox + "'"; 
Verwandte Themen