2011-10-08 22 views
-1

有人可以教我如何使用這個SQL包裝?我很困惑要放什麼東西在第二參數變量...謝謝=)使用參數化的SQL包裝

public void Insert(string strSQL, List<MySqlParameter> params) 
{ 
    if(this.OpenConnection() == true) 
    { 
     MySqlCommand cmd = new MySqlCommand(strSQL, connection) 
     foreach(MySqlParameter param in params) 
      cmd.Parameters.Add(param); 

     cmd.ExecuteNonQuery(); 
     this.CloseConnection(); 
    } 
} 
+0

我只是需要一個關於如何使用這個SQL包裝的例子謝謝=) –

+1

你確定這個編譯? 'params'是一個關鍵字,所以我懷疑編譯器會接受它作爲參數名稱嗎? –

+0

我剛剛發現這個sql包裝器在這裏的某處stackoverflow和粘貼在這裏...只是等待一秒...我會把鏈接,我發現它 –

回答

2

您可以使用它像這樣,

List<MySqlParameter> sqlParams = new List<MySqlParameter>(); 

SqlParameter param1 = new SqlParameter(); 
param.ParameterName = "@City"; 
param.Value = inputCity; 

SqlParameter param2 = new SqlParameter(); 
param.ParameterName = "@Country"; 
param.Value = inputCountry; 

sqlParams.Add(param1); 
sqlParams.Add(param2); 

Insert("SELECT * FROM customers WHERE city = @City AND country = @Country", sqlParams); 
+0

有沒有更簡單的方法可以使用它?或者也許一些重新編碼與SQL包裝?因爲如果我將使用這種方法,我將不再使用sql包裝器,因爲它的代碼需要使用相同長度的參數化查詢而不使用包裝器 –

+1

你的意思是什麼,更短?你問在你的例子中如何使用這個包裝,我給你看了一個例子... – evilone

+0

好吧然後感謝=) –

0

這裏是一個示例代碼。

List<MySqlParameter> parameters = new List<MySqlParameter>(); 
string sql = "INSERT INTO table1 VALUES(?Name, ?Age)"; 
parameters.Add(new MySqlParameter() { ParameterName = "?Name", Value = "Mahan"}); 
parameters.Add(new MySqlParameter() { ParameterName = "?Age", Value = "??"}); 

Insert(sql, parameters); 
1

這聽起來(評論)之類的問題是C#調用代碼,在這種情況下dapper-dot-net可能會幫助 - 它是一個高度優化的工具層,使通話更方便,例如:

int id = 123; 
string name = "Fred"; 
connection.Execute(@"insert into TableName (Id, Name) values (?id, ?name)", 
    new {id, name}); 

它爲你處理所有的命令和參數代碼,所以你只需要擔心連接,SQL和值。也有類似的方法(Query[<T>]等)讀取數據。例如:

int customerId = 12345; 
List<Order> orders = connection.Query<Order>(@" 
    select * from Orders where CustomerId = ?customerId", new {customerId}) 
    .ToList(); 
+0

謝謝....這似乎是一個很好的代碼,但我怎麼可以用這個代碼選擇?我只是把它分配給一個SQLAdapter? –

+0

@Mahan加入SELECT示例 –