我试图将我的分数从文本框插入到数据库得分中,但它不起作用

时间:2017-09-23 04:19:47

标签: c# sql

这是我的代码:

con.Open();
String query = "INSERT INTO tbl_score (personality,style,poise,audience,total) VALUES ('" + 
               textBox1.Text + "','" + textBox2.Text + "','" +textBox3.Text + "','" + 
               textBox4.Text + "','" + textBox5.Text + "',)";
MySqlDataAdapter SDA = new MySqlDataAdapter(query, con);
SDA.SelectCommand.ExecuteNonQuery();
con.Close();
MessageBox.Show("Succesfully Voted");

我收到此错误:

  

您的SQL语法有错误;检查手册   对应于您的MariaDB服务器版本,以获得正确的语法   在第1行附近')'

2 个答案:

答案 0 :(得分:3)

你应该总是(没有例外!)使用参数进行查询 - 它首先避免了互联网上的#1威胁 - SQL注入 - 它也是避免使用字符串等引用的杂乱问题。

试试这段代码:

string query = "INSERT INTO tbl_score (personality, style, poise, audience, total) " +
               "VALUES (@personality, @style, @poise, @audience, @total);";


using (MySqlCommand cmd = new MySqlCommand(query, con))
{
    // set the parameter values 
    cmd.Parameters.Add("@personality", MySqlDbType.VarChar, 100).Value = textBox1.Text;
    cmd.Parameters.Add("@style", MySqlDbType.VarChar, 100).Value = textBox2.Text;
    cmd.Parameters.Add("@poise", MySqlDbType.VarChar, 100).Value = textBox3.Text;
    cmd.Parameters.Add("@audience", MySqlDbType.VarChar, 100).Value = textBox4.Text;
    cmd.Parameters.Add("@total", MySqlDbType.VarChar, 100).Value = textBox5.Text;

    // open connection, execute INSERT query, close connection
    con.Open();
    int rowsInserted = cmd.ExecuteNonQuery();
    con.Close();
}

MessageBox.Show("Succesfully Voted");

此外,您应该使用最合适的数据类型作为参数 - 如果值数字(我怀疑是@total),那么您应该使用数值数据类型 - 不要将所有内容都转换为字符串 - 使用正确的数据类型。

答案 1 :(得分:0)

你需要在结束括号之前删除逗号(,)。

您的查询必须

String query = "INSERT INTO tbl_score (personality,style,poise,audience,total) VALUES ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "')";