2017-04-26 74 views
-9

你好,你可以幫我這個新用戶添加到數據庫

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"); 
} 

我試圖把圖像上的最終仍以同樣的錯誤,當我嘗試用密碼12345

錯誤創建新用戶附近的語法「12345

+0

通過放置一個斷點來檢查構造的sql查詢。請記住,您應該使用參數,而不是直接連接來自用戶輸入的sql, – ganeshran

+0

您在用戶名和密碼值之間有句點而不是逗號。另外,你應該使用參數化查詢,否則它很容易發生SQL注入。 –

+1

錯誤消息說:檢查你的語法!你檢查了嗎?並且:瞭解SQL注入! – manuzi1

回答

0

你的問題很簡單語法;你有一段時間而不是逗號textBox1.Text+"'.'"+textBox3.Text

另一個問題是你需要來使用參數化查詢。

這裏是你的代碼更新爲使用參數化......

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"); 
} 

另一個方面的問題是,你不加密的密碼,但我猜你會得到最終還是剛上任它出於爲了創造一個最小的問題。

+0

感謝代碼,我確實把它拿出來再次謝謝 – Joe

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

而在這之後,我建議你查詢重寫使用所有注入值的參數。

+0

感謝德米特里這樣一個小小的錯誤花費了我2-3小時再次感謝 – Joe

3

我想你需要TextBox1中和TextBox3之間用逗號

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