2017-04-26 6 views
-9

Hallo können Sie mir helfen mit diesemHinzufügen neuer Benutzer zu Datenbank

private void button2_Click(object sender, EventArgs e) 
{ 
    Byte[] IMAGES = null; 
    FileStream STREAM = new FileStream(IMGLOCATION, FileMode.Open, FileAccess.Read); 
    BinaryReader BSR = new BinaryReader(STREAM); 
    IMAGES = BSR.ReadBytes((int)STREAM.Length); 

    CON.Open(); 
    string SQLQUERY = "INSERT INTO USERS (FULNAME,USERNAME,PASSWORD,IMAGE,STATUS)VALUES('"+textBox2.Text+"','"+textBox1.Text+"'.'"+textBox3.Text+ "',@IMG,'" + textBox4.Text + "')"; 
    CMD = new SqlCommand(SQLQUERY,CON); 
    CMD.Parameters.Add(new SqlParameter("@IMG", IMAGES)); 
    int N = CMD.ExecuteNonQuery(); 
    CON.Close(); 
    MessageBox.Show("USER CREATED SUCCESSFULLY"); 
} 

Ich versuchte Bild am Ende noch denselben Fehler zu setzen, wenn ich versuche, mit 12345 Passwort neuen Benutzer erstellen

Falsche Syntax in der Nähe von ‚12345

+0

überprüfen Sie die konstruierte SQL-Abfrage, indem Sie einen Haltepunkt setzen. Beachten Sie, dass Sie Parameter verwenden sollten, die den SQL nicht direkt von Benutzereingaben verketten. – ganeshran

+0

Sie haben einen Punkt anstelle eines Kommas zwischen dem Benutzernamen und dem Passwort. Außerdem sollten Sie parametrisierte Abfragen verwenden, andernfalls ist es anfällig für SQL-Injection. –

+1

Die Fehlermeldung lautete: Überprüfen Sie Ihre Syntax! Hast du es überprüft? Und: Achten Sie auf SQL-Injection! – manuzi1

Antwort

0

Ihr Problem ist einfach Syntax; Sie hatten einen Punkt anstelle eines Kommas bei textBox1.Text+"'.'"+textBox3.Text

Das andere Problem ist, dass Sie benötigen, um parametrisierte Abfragen zu verwenden.

Hier wird der Code aktualisiert Parametrisierung verwenden ...

private void button2_Click(object sender, EventArgs e) 
{ 
    Byte[] IMAGES = null; 
    FileStream STREAM = new FileStream(IMGLOCATION, FileMode.Open, FileAccess.Read); 
    BinaryReader BSR = new BinaryReader(STREAM); 
    IMAGES = BSR.ReadBytes((int)STREAM.Length); 

    CON.Open(); 
    string SQLQUERY = "INSERT INTO USERS (FULNAME,USERNAME,PASSWORD,IMAGE,STATUS)VALUES(@name, @username, @password, @IMG, @status)"; 
    CMD = new SqlCommand(SQLQUERY,CON); 
    CMD.Parameters.AddWithValue("@name", textBox2.Text); 
    CMD.Parameters.AddWithValue("@username", textBox1.Text); 
    CMD.Parameters.AddWithValue("@password", textBox3.Text); 
    CMD.Parameters.Add(new SqlParameter("@IMG", IMAGES)); 
    CMD.Parameters.AddWithValue("@status", textBox4.Text); 
    int N = CMD.ExecuteNonQuery(); 
    CON.Close(); 
    MessageBox.Show("USER CREATED SUCCESSFULLY"); 
} 

Eine andere Seite Problem ist, dass Sie das Passwort nicht verschlüsseln, aber ich vermute, Sie schließlich zu, dass bekommen oder einfach nur nahm es aus Gründen der Schaffung einer minimalen Frage.

+0

Danke für den Code und ich habe es aus Danksagung wieder – Joe

5
... +textBox1.Text+"'.'"+textBox3.Text+ ... 
        ^
        | 
      change this dot to comma 

Und danach würde ich vorschlagen, gehen Sie bitte zur neu zu schreiben Verwenden Sie Parameter für alle injizierten Werte.

+0

danke Dmitry so ein kleiner Fehler kostete mich 2-3 Stunden noch einmal danke – Joe

3

Ich glaube, Sie brauchen Komma zwischen TextBox1 und TextBox3

string SQLQUERY = "INSERT INTO USERS (FULNAME,USERNAME,PASSWORD,IMAGE,STATUS)VALUES('"+textBox2.Text+"','"+textBox1.Text+"','"+textBox3.Text+ "',@IMG,'" + textBox4.Text + "')"; 
Verwandte Themen