con.Open();
cmd2 = new SqlCommand("insert into dailyWorkout('"+RadioButton1.Text+"', '"+RadioButton2.Text+"', '"+RadioButton3.Text+"', '"+RadioButton4.Text+"', '"+RadioButton5.Text+"', '"+Label1.Text+"')", con);
cmd2.ExecuteNonQuery();
嘿伙计们,已经在这个网站上工作了一段时间,但是在将数据放入数据库时出现错误
')'附近的语法不正确。
对于其他我正在采用相同方式工作的东西,但事实并非如此。
答案 0 :(得分:3)
你真的应该真正使用参数化查询来避免SQL注入(并提高性能;避免类型转换等问题。)
所以我建议使用这样的代码:
// define your *parametrized* SQL statement
string insertStmt = "INSERT INTO dbo.YourTable(Col1, Col2, Col3) VALUES(@Val1, @Val2, @Val3);";
// put SqlConnection and SqlCommand into "using" blocks to ensure proper disposal
using(SqlConnection conn = new SqlConnection("-your-connection-string-here-"))
using(SqlCommand cmd = new SqlCommand(insertStmt, conn))
{
// set the parameters to the values you need
cmd.Parameters.AddWithValue("@Val1", "Some String here");
cmd.Parameters.AddWithValue("@Val2", 42);
cmd.Parameters.AddWithValue("@Val3", DateTime.Today.AddDays(-7));
// open connection, execute query, close connection right away
conn.Open();
int rowsAffected = cmd.ExecuteNonQuery();
conn.Close();
}
要记住的要点:
SqlConnection
和SqlCommand
放入using(...) { ... }
块以确保妥善处置SELECT
和INSERT
声明中使用的列的列表答案 1 :(得分:0)
那将完成这项工作,但我强烈建议使用参数。
con.Open();
cmd2 = new SqlCommand("insert into dailyWorkout values ('"+RadioButton1.Text+"', '"+RadioButton2.Text+"', '"+RadioButton3.Text+"', '"+RadioButton4.Text+"', '"+RadioButton5.Text+"', '"+Label1.Text+"')", con);
cmd2.ExecuteNonQuery();
而不是上面的代码,你最好使用
cmd2 = new SqlCommand("insert into dailyWorkout values (@val1, @val2, @val3,@val4,@val5,@val6)", con);
cmd2.Parameters.AddWithValue("@val1",RadioButton1.Text);
cmd2.Parameters.AddWithValue("@val2",RadioButton2.Text);
cmd2.Parameters.AddWithValue("@val3",RadioButton3.Text);
cmd2.Parameters.AddWithValue("@val4",RadioButton4.Text);
cmd2.Parameters.AddWithValue("@val5",RadioButton5.Text);
cmd2.Parameters.AddWithValue("@val6",Label1.Text)
cmd2.ExecuteNonQuery();
答案 2 :(得分:0)
好的已经提到了,不要注入这样的参数。 但如果必须,问题是你的最终sql字符串如下:
insert into dailyWorkout('string1', 'string2', 'string3', 'string4', 'string5', 'string6')
什么时候应该
insert into dailyWorkout(columnName1,columnName2,columnName3,columnName4,columnName5,columnName6)
values('string1', 'string2', 'string3', 'string4', 'string5', 'string6')
但你应该考虑:
var sqlCmd = new SqlCommand("insert into dailyWorkout(columnName1,columnName2,columnName3,columnName4,columnName5,columnName6) values(@v1, @v2, @v3, @v4, @v5, @v6)", default(SqlConnection));
sqlCmd.Parameters.Add("@v1", SqlDbType.NVarChar).Value = RadioButton1.Text;
sqlCmd.Parameters.Add("@v2", SqlDbType.NVarChar).Value = RadioButton2.Text;
sqlCmd.Parameters.Add("@v3", SqlDbType.NVarChar).Value = RadioButton3.Text;
sqlCmd.Parameters.Add("@v4", SqlDbType.NVarChar).Value = RadioButton4.Text;
sqlCmd.Parameters.Add("@v5", SqlDbType.NVarChar).Value = RadioButton5.Text;
sqlCmd.Parameters.Add("@v6", SqlDbType.NVarChar).Value = Label1.Text;
sqlCmd.ExecuteNonQuery();