【发布时间】:2023-03-29 23:33:01
【问题描述】:
我有两个收音机盒子。一个是真的,另一个是假的。我立了一个flag 但它没有用。这是我现在的代码
string sqlStatement;
SqlConnection cnn = new SqlConnection(Properties.Settings.Default.cnnString);
cnn.Open();
SqlCommand cmd = cnn.CreateCommand();
cmd.CommandType = CommandType.Text;
sqlStatement = string.Format("UPDATE Results SET Finish = '{0}', Place = '{1}', FinishTime = {2}, Winnings = '{3}' Where ResultsId = '{4}' " + (rdoDidFinish.Checked ? 1 : 0), txtPlace.Text, txtTime.Text, txtWinnings.Text);
cmd.CommandText = sqlStatement;
cmd.ExecuteNonQuery();
cnn.Close();
我得到的错误是:
“索引(从零开始)必须大于或等于零且小于参数列表的大小。”
【问题讨论】:
-
请在准备好的语句中使用参数!
-
你是什么意思@juergend
-
String.Format()调用中有 5 个占位符,但只传递了 3 个参数。此外,正如所指出的,您应该真正使用参数,而不是像那样构建 SQL 语句,因为您会让自己受到 SQL 注入攻击。 -
这不是 SQL 错误,这是
string.format错误。您有五个参数,但在您的语句中只提供了 3 个。
标签: c# sql boolean sql-update sql-insert