2012-11-07 28 views
17

Làm thế nào tôi có thể sử dụng Parameters.Add.WithValue trong SqlDataAdapter. Dưới các mã tìm kiếm.C# Using Parameters.AddWithValue trong SqlDataAdapter

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

Tôi viết lại đoạn code như thế này:

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); 

Nhưng thất bại. Bạn có thể giúp tôi đâu là lỗi của tôi?

+0

Ooh xin lỗi. Khi tôi nhấp vào nút tìm kiếm, nó không đưa ra bất kỳ phản ứng nào. –

Trả lời

48

Các chuỗi được sử dụng để khởi tạo SqlDataAdapter trở thành CommandText của SelectCommand tài sản của SqlDataAdapter.
Bạn có thể thêm tham số để lệnh với mã này

da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE @search", 
         _mssqlCon.connection); 
da.SelectCommand.Parameters.AddWithValue("@search","%" + txtSearch.Text + "%"); 
  • Thứ nhất, loại bỏ các dấu nháy đơn xung quanh tham số giữ chỗ.
  • Thứ hai, thêm ký tự đại diện trực tiếp trong tham số giá trị gia tăng của AddWithValue

Bạn đã yêu cầu sử dụng AddWithValue, nhưng hãy nhớ rằng, trong khi nó là một phím tắt hữu ích, cũng có nhiều nhược điểm và tất cả tài liệu tốt.

Vì vậy, cùng mã không có AddWithValue và sử dụng cú pháp Object and Collection Initializers có thể được viết như

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

Hãy thử điều này:

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

tôi sử dụng Repeater cho chương trình dữ liệu

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(); 
}