下面的代码编写为在asp.net中调用参数化选择查询
public bool checkConflictTime()
{
bool TimeExists = false;
DataSet ds = new DataSet();
SqlConnection sqlconn = new SqlConnection();
sqlconn.ConnectionString = ConfigurationManager.ConnectionStrings["TestConn"].ConnectionString;
string sql = @"SELECT * FROM Images WHERE starttime= @starttime AND endtime = @endtime";
SqlCommand sqlcommand = new SqlCommand(sql,sqlconn);
//sqlcommand.Connection = sqlconn;
//string sql = "CheckConflictTimings";
sqlcommand.CommandType = CommandType.Text;
sqlcommand.CommandText = sql;
sqlcommand.Parameters.Add(new SqlParameter("@starttime", ddlStartTime.SelectedItem.Text));
sqlcommand.Parameters.Add(new SqlParameter("@endtime", ddlEndTime.SelectedItem.Text));
SqlDataAdapter da = new SqlDataAdapter(sql, sqlconn);
try
{
da.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
TimeExists = true;
}
}
catch (Exception ex)
{
}
finally
{
sqlconn.Close();
sqlconn.Dispose();
}
return TimeExists;
}
有什么问题吗?它抛出错误:必须声明标量变量“@starttime” 填充数据适配器时。
答案 0 :(得分:1)
尝试
SqlDataAdapter da = new SqlDataAdapter(sqlcommand);
答案 1 :(得分:0)
尝试
sqlcommand.Parameters.Add(new SqlParameter("starttime", ddlStartTime.SelectedItem.Text));
添加参数时,我认为您不需要@
前缀。
答案 2 :(得分:0)
我认为你没有将你的命令作为SelectCommand传递给适配器。
da.SelectCommand = sqlcommand;
答案 3 :(得分:0)
尝试
sqlcommand.Parameters.AddWithValue("@starttime",ddlStartTime.SelectedItem.Text);
而不是
sqlcommand.Parameters.Add(new SqlParameter("@starttime", ddlStartTime.SelectedItem.Text));