2016-08-05 5 views
0

Ich habe ein Problem mit einem Login-Formular mit SQLite in C#. Dies ist der CodeLogin-Formular mit SQLite in C#

SQLiteConnection connectionstring; 
connectionstring = " Data Source = C:\Crystal Management\Crystal Management\bin\Debug\Konaku.db; Version = 3 "; 
public void LoadData() 
{ 
    try 
    { 
     SQLiteCommand SelectCommand = new SQLiteCommand("SELECT `Username`, `Password` FROM `LoginData` WHERE `Username` = '" + flatTextBox1.Text + "' AND `Password` = '" + flatTextBox2.Text + "'", connectionstring); 
     SQLiteDataReader myReader; 
     connectionstring.Open(); 
     myReader = SelectCommand.ExecuteReader(); 
     int count = 0; 
     while (myReader.Read()) 
     { 
      count = count + 1; 
     } 
     if (count == 1) 
     { 
      Base bs = new Base(); 
      bs.Show(); 
      this.Hide(); 
      connectionstring.Close(); 
     } 
     else if (count == 0) 
     { 
      flatAlertBox1.kind = FlatUI.FlatAlertBox._Kind.Error; 
      flatAlertBox1.Text = "data not right"; 
      connectionstring.Close(); 

     } 
     else 
     { 

     } 
    } 
    catch (Exception ex) { 
      MessageBox.Show(ex.Message); 
      connectionstring.Close(); 
    } 
} 

es wird in dieser Codezeile

connectionstring = " Data Source = C:\\Crystal Management\\Crystal Management\bin\\Debug\\Konaku.db; Version = 3 "; 

Fehlermeldung Fehler zeigt, ist: Kann nicht implizit Typ 'string' in 'Finisar.SQLite.SQLiteConnection' konvertieren

Was kann ich damit machen?

+0

Übergeben Sie die Verbindungszeichenfolge in die 'SQLiteConnection (" connectionString ")'. – Izzy

+0

gerade getan, und es kann die Datei nicht finden. Es zeigt "Datei: 'C: \ Crystal Management \ Crystal Management \ bin \ Debug \ Konaku.db" existiert nicht. Verwenden Sie den ConnectionString-Parameter New = true, um eine neue Datei zu erstellen. EDIT: sieht so aus, als hätte ich ein \ after bin verpasst \\ debug, aber jetzt, wenn Sie den Code ausprobieren, wird "unerkanntes Token" angezeigt. " – berg96

+0

Das harte Codieren eines Pfades in Ihrem Code ist ein sicheres Rezept für Fehler. Was passiert, wenn der Zielcomputer diesen Pfad nicht besitzt? Verwenden Sie die App.config, um diese Informationen zu speichern – Steve

Antwort

0

sein Dies ist der richtige Weg ist SQL abzufragen. Verwenden Sie immer "using" für die dispositive Klasse wie SQLiteConnection, SQLiteCommand und SQLiteDataReader. Verwenden Sie parametrisierte Abfragen, um die SQL-Injektion zu vermeiden.

public void LoadData() 
{ 
    try 
    { 
    using (var conn = new SQLiteConnection(@"Data Source=C:\Crystal Management\Crystal Management\bin\Debug\Konaku.db;Version=3")) 
    { 
     conn.Open(); 
     using (var cmd = new SQLiteCommand("SELECT Username,Password FROM LoginData WHERE Username='@username' AND Password = '@password'", conn)) 
     { 
     cmd.Parameters.AddWithValue("@username", flatTextBox1.Text); 
     cmd.Parameters.AddWithValue("@password", flatTextBox2.Text); 
     using (var reader = cmd.ExecuteReader()) 
     { 
      var count = 0; 
      while (reader.Read()) 
      { 
      count = count + 1; 
      } 
      if (count == 1) 
      { 
      Base bs = new Base(); 
      bs.Show(); 
      Hide(); 
      } 
      else if (count == 0) 
      { 
      flatAlertBox1.kind = FlatUI.FlatAlertBox._Kind.Error; 
      flatAlertBox1.Text = "data not right"; 
      } 
     } 
     } 
    } 
    } 
    catch (Exception ex) 
    { 
    MessageBox.Show(ex.Message); 
    } 
} 
+0

habe es vor ca. 30 Minuten gefunden, aber immer noch danke, das ist, was ich gesucht habe – berg96

1

sollte es so

sql_con = new SQLiteConnection 
    ("Data Source=C:\Crystal Management\Crystal Management\bin\Debug\Konaku.db;Version=3;New=False;Compress=True;"); 
+0

hat "unerkannt Token" '" – berg96

+1

Backslash muss doppelte Backslash sein" \\ " –

+0

Die SQL-Anweisung enthält ein intelligentes einfaches Zitat. –