2012-11-07 29 views
17

如何在SqlDataAdapter中使用Parameters.Add.WithValue。在搜索代碼下方。c#在SqlDataAdapter中使用Parameters.AddWithValue

var da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE '%"+txtSearch.Text+"%'", _mssqlCon.connection); 
var dt = new DataTable(); 
da.Fill(dt); 

我改寫這樣的代碼:

SqlDataAdapter da; 
da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE '%@search%'", _mssqlCon.connection); 
da.SelectCommand.Parameters.AddWithValue("@search",txtSearch.Text); 
var dt = new DataTable(); 
da.Fill(dt); 

但是失敗了。你能幫我嗎我的錯在哪裏?

+0

哦對不起。當我點擊搜索按鈕,它不給任何反應。 –

回答

48

用於初始化SqlDataAdapter的字符串變爲SqlDataAdapter的SelectCommand屬性的CommandText
你可以使用此代碼

da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE @search", 
         _mssqlCon.connection); 
da.SelectCommand.Parameters.AddWithValue("@search","%" + txtSearch.Text + "%"); 
  • 首先將參數添加到該命令,刪除周圍的參數佔位符的單引號。
  • 其次,直接在 值參數添加通配符AddWithValue

您已經要求使用AddWithValue,但要記住,雖然它是有用的快捷方式,也有許多缺點和所有有據可查。

所以,相同的代碼沒有AddWithValue和使用Object and Collection Initializers語法可以寫成

da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE @search", 
         _mssqlCon.connection); 
da.SelectCommand.Parameters.Add(new SqlParameter 
{ 
    ParameterName = "@search", 
    Value = "%" + txtSearch.Text + "%", 
    SqlDbType = SqlDbType.NVarChar, 
    Size = 2000 // Assuming a 2000 char size of the field annotation (-1 for MAX) 
}); 
0

試試這個:

mySearchString = "Select * From test Where ([title] LIKE '%' + @title + '%')"; 
cmd.Parameters.Add("@title", SqlDbType.VarChar, 120); 
cmd.Parameters("@title").Value = TextBox1.Text; 
0

我用轉發器,用於顯示數據

int queryString =int.Parse(Request.QueryString["Id"]); 

SqlConnection conn =new SqlConnection("server=.; Database=Northwind; 
Integrated Security=true;"); 

try{ 
conn.Open(); 

SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT ProductID, ProductName, UnitPrice, CategoryID FROM Products WHERE CategoryID [email protected]", conn); 

dataAdapter.SelectCommand.Parameters.Add("@CategoryID", queryString); 
         DataSet dataSet = new DataSet(); 
         dataAdapter.Fill(dataSet); 
         QueryStringProductListRepeater.DataSource = dataSet; 
         QueryStringProductListRepeater.DataBind(); 
} 

catch{ 
Response.Write("QueryStringProductListRepeater"); 
} 

finally{ 
conn.Close(); 
}