2011-04-07 26 views
0

下面的代碼寫入到調用參數的選擇查詢在asp.net怎麼寫選擇在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」 。

回答

1

嘗試

SqlDataAdapter da = new SqlDataAdapter(sqlcommand); 
0

嘗試

sqlcommand.Parameters.Add(new SqlParameter("starttime", ddlStartTime.SelectedItem.Text)); 

我不認爲你添加參數時需要的@前綴。

+0

發佈問題之前嘗試。祝你好運 – 2011-04-07 10:20:23

+0

@Xor我認爲你的查詢結構可以更好地形成,看看這個例子http://www.dotnetperls.com/sqlparameter,也許應用它的格式,它應該使開發更容易 – 2011-04-07 10:22:25

0

我想你並沒有將你的命令作爲SelectCommand傳遞給適配器。

da.SelectCommand = sqlcommand; 
0

嘗試的

sqlcommand.Parameters.AddWithValue("@starttime",ddlStartTime.SelectedItem.Text); 

代替

sqlcommand.Parameters.Add(new SqlParameter("@starttime", ddlStartTime.SelectedItem.Text));