2012-09-07 29 views
5

Làm thế nào để vượt qua một giá trị số nguyên như các tham số lệnh SQL?Làm thế nào để vượt qua các tham số int trong Sql commandText

tôi đang cố gắng như thế này:

cmd.CommandText = ("insert_questions '" + 
cmd.Parameters.AddWithValue(store_result,store_result) + "','" + 
cmd.Parameters.AddWithValue(store_title, store_title) + "', '" + 
cmd.Parameters.AddWithValue(store_des, store_des) + "'"); 

store_result là int và khác 2 tham số là kiểu string.

store_result đang đưa ra thông báo lỗi như dưới đây.

Đối số 1: không thể chuyển đổi từ 'int' thành 'chuỗi'

trong SP, có một một loại int biến mà sẽ nhận được giá trị của store_result.

Cú pháp chính xác để truyền tham số int là gì?

Cảm ơn bạn.

+0

Không đặt dấu phân cách chuỗi xung quanh giá trị int của bạn (nhưng tôi nghi ngờ đây là vấn đề của bạn). – phoog

Trả lời

5

nó phải như thế này,

cmd.CommandType = CommandType.StoredProcedure; 
cmd.CommandText = ("insert_questions") ; 
cmd.Parameters.AddWithValue("@value", valueHere); 
cmd.Parameters.AddWithValue("@value2", valueHere); 

lưu ý rằng @value@value2 là các thông số khai báo trong thủ tục lưu trữ của bạn.

5

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

 cmd.CommandText = ("insert_questions @store_result, @store_title, @store_des"); 
     cmd.Parameters.AddWithValue("@store_result", store_result); 
     cmd.Parameters.AddWithValue("@store_title", store_title); 
     cmd.Parameters.AddWithValue("@store_des", store_des); 
3

Bạn không nối các phiên bản SqlParameter; thay vì:

cmd.CommandText = "insert_questions @store_result, @store_title, @store_des"; 
cmd.Parameters.AddWithValue("store_result", store_result); 
cmd.Parameters.AddWithValue("store_title", store_title); 
cmd.Parameters.AddWithValue("store_des", store_des); 

Tên sử dụng trong AddWithValue được sử dụng trong TSQL như @store_result vv

Nếu chúng ta giả định rằng inert_questions thực sự là một proc, sau đó nó thậm chí còn đơn giản hơn:

cmd.CommandText = "insert_questions"; 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.Parameters.AddWithValue("store_result", store_result); 
cmd.Parameters.AddWithValue("store_title", store_title); 
cmd.Parameters.AddWithValue("store_des", store_des); 

Ngoài ra, nếu tất cả điều đó có vẻ tẻ nhạt, các công cụ như dapper-dot-net giúp việc này dễ dàng hơn:

someOpenConnection.Execute("insert_questions",  
     new { store_result, store_title, store_des }, 
     commandType: CommandType.StoredProcedure); 
9

cách chính xác để đi là

using(var connection = new SqlConnection(ConnectionString)) 
{ 
    connection.Open(); 
    using(var command = new SqlCommand("SELECT * FROM Table WHERE [email protected]",connection)) 
    { 
     command.Parameters.AddWithValue("someID",1234); 
     var r = command.ExecuteQuery(); 
    } 
} 

này có nghĩa là nó làm việc ngay cả với các truy vấn văn bản. nó thậm chí còn dễ dàng hơn với các thủ tục được lưu trữ - thay vì truy vấn sql, bạn chỉ cần cung cấp tên thủ tục được lưu trữ:

using(var connection = new SqlConnection(ConnectionString)) 
{ 
    connection.Open(); 
    using(var command = new SqlCommand("insert_sproc",connection)) 
    { 
     command.CommandType = CommandType.StoredProcedure; 
     command.Parameters.AddWithValue("someID",1234); 
     var r = command.ExecuteQuery(); 
    } 
} 
Các vấn đề liên quan