2017-04-26 68 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 + "')";