2016-05-12 6 views
2

Guten Tag alle! Ich habe ein kleines Problem mit der Einfügung in mein Programm. Sehen Sie, der Code hat keine Fehler, aber ich habe eine OleDb-Ausnahme, wenn ich versuche einzufügen. Die anderen Teile meiner Projektarbeit in Ordnung, aber es ist ein kleines Problem, dass ich hier nichtProbleme mit der Funktion Einfügen zu meinem Datenbankprogramm

zu finden scheinen,
public void Insert() 
    { 
     //myDb = new OleDbConnection(conn + dbFile); 
     myDb.Open(); 
     OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM Employee", myDb); 
     // 
     OleDbCommand cmd = new OleDbCommand("INSERT INTO Employee(Username, Password, email, phone) VALUES ('" + insUn + "','" + insPass + "','" + insNm + "','" + insNmr + "')", myDb); 

     adapter.InsertCommand = cmd; 

     adapter.InsertCommand.ExecuteNonQuery(); 



     DataSet ds = new DataSet(); 
     adapter.Fill(ds, "Employee"); 

     dataGridView1.DataSource = ds; 
     dataGridView1.DataMember = "Employee"; 

     myDb.Close(); 
    } 

Die anderen Funktionen wie die Suche und Arbeit löschen, aber ich kann das Problem hier

nicht gefunden

Dies sind die Ausnahmen:

try 
     { 
      if (textBox2.Text != "") 
      { 
       insUn = textBox2.Text; 
       insNmr = textBox4.Text; 
       insPass = textBox3.Text; 
       insNm = textBox5.Text; 
      } 
      Insert(); 
     } 
     catch (OleDbException ex) 
     { 
      MessageBox.Show("Error, please try again", "Exception", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error); 
     } 
     catch (FormatException ex) 
     { 
      MessageBox.Show("One or more fields have not been entered. Please check and re-enter", "Missing fields", MessageBoxButtons.OK, MessageBoxIcon.Hand); 
     } 



enter code here 
+0

Was oledb Ausnahme sehen Sie? Sind Ihnen auch [sql injection] (http://bobby-tables.com/) bekannt? –

+0

Ich bin nicht wirklich bewusst, SQL-Injektion obwohl –

+0

Sie fangen Ausnahmen, aber nicht auf die Details der Ausnahme. Sie müssen sich den StackTrace und/oder die Nachricht ansehen, die die Ausnahme zurückgibt. – Kritner

Antwort

0

ich Rat Sie die Parameter verwenden SQL-Injektionen zu vermeiden und die Klammern [] in Abfrage für [Password] setzen, weil es wie unten ein Schlüsselwort ist:

+0

Vielen Dank! Lassen Sie mich es jetzt ausprobieren –

+0

Ich bekomme immer noch einen Fehler hier http://imgur.com/urZ7KzV –

+0

Ich habe Änderungscode in Antwort können Sie es versuchen –

0

Abdellahs Antwort funktioniert, aber beachten Sie beim Erstellen der Abfragezeichenfolge SQL Injection-Angriffe. Sie sollten es so bauen:

OleDbCommand cmd = new OleDbCommand("INSERT INTO Employee(Username, Password, email, phone) VALUES (@p1, @p2, @p3, @p4)", myDb); 
int maxSize = 50; 
cmd.Paramters.Add("@p1", SqlDbType.VarChar, maxSize).Value = insUn; 
cmd.Parameters.Add("@p2", SqlDbType.VarChar, maxSize).Value = insPass; 
cmd.Parameters.Add("@p3", SqlDbType.VarChar, maxSize).Value = insNm; 
cmd.Parameters.Add("@p4", SqlDbType.VarChar, maxSize).Value = insNmr; 
Verwandte Themen