Tôi đang gọi mã bên dưới.C#, sp_executesql và Cú pháp không chính xác
Trên dòng (IDataReader dr = cmd.ExecuteReader()) sql barfs với cú pháp không đúng gần 'CompanyUpdate'.
using (SqlCommand cmd = new SqlCommand("CompanyUpdate"))
{
cmd.Parameters.Add("@CompanyID",SqlDbType.Int);
cmd.Parameters.Add("@Description",SqlDbType.VarChar,50);
cmd.Parameters["@CompanyID"].Value = companyid;
cmd.Parameters["@Description"].Value = description;
SqlConnection cn = new SqlConnection("Data Source=[datasource];Initial Catalog=dotNext;User ID=[user];Password=[password];Pooling=True;Application Name=dotNext");
cn.Open();
cmd.Connection = cn;
using (IDataReader dr = cmd.ExecuteReader())
{
if (dr.Read())
{
this.CompanyID = dr.GetInt32(0);
}
}
}
tôi đã có một cái nhìn tại SqlProfiler và nhận thấy như sau:
exec sp_executesql N'CompanyUpdate',N'@CompanyID int,@Description varchar(50)',@CompanyID=56,@Description='APC'
của gói lệnh wit tôi một sp_executesql. Tất cả các lệnh sql khác của tôi chỉ được thực thi mà không có vấn đề gì.
Vì vậy, câu hỏi của tôi là hai lần: 1. Tại sao lại sử dụng sp_executesql? 2. Tôi đang làm gì sai?
chi tiết: sql2005, C#, vs2005
Điều đó thật khó chịu !! Cảm ơn bạn! –
lol - đôi khi nó chỉ mất một bộ khác nhau của mắt ... – BenAlabaster
Argh, cảm ơn. Tại sao trên trái đất sẽ không nó lỗi ra nếu bạn thêm các tham số vào một SqlCommand và không đặt nó vào StoredProcedure ... – jcollum