【发布时间】:2017-12-24 07:19:35
【问题描述】:
首先,我必须把明显的事情排除在外;我已经搜索过同样的问题,StackOverFlow 上有这个问题的答案,但它对我没有用。
问题:我收到一个错误
SqlCommand.Prepare 方法要求所有可变长度参数具有显式设置的非零大小
与此声明一致
cmd.Prepare();
数据库架构:
代码:
//alreadyAnsweredQues is Global -- List<Int32>
var parameters = new string[alreadyAnsweredQues.Count];
var cmd = new SqlCommand();
for (int i = 0; i < alreadyAnsweredQues.Count; i++)
{
parameters[i] = string.Format("@qid{0}", i);
cmd.Parameters.Add(parameters[i].ToString(), SqlDbType.Int).Value = alreadyAnsweredQues[i];
}
cmd.Parameters.Add("@cid", SqlDbType.Int).Value = Convert.ToInt32(Session["c_id"].ToString());
cmd.CommandText = string.Format("SELECT TOP 1 * FROM questions WHERE c_id = @cid AND q_id NOT IN ({0}) ORDER BY NEWID() ;", string.Join(", ", parameters));
System.Diagnostics.Debug.WriteLine(string.Format("SELECT TOP 1 * FROM questions WHERE c_id = @cid AND q_id NOT IN ({0}) ORDER BY NEWID() ;", string.Join(", ", parameters)));
cmd.Connection = new SqlConnection(ConnectionClass.constr);
cmd.Connection.Open();
cmd.Prepare();
SqlDataReader sdr = cmd.ExecuteReader();
【问题讨论】:
标签: c# asp.net sql-server webforms