2015-05-27 82 views
1

所以我希望創建一個很好的函數,以更好的方式查詢MySQL命令。沿着這一個線的東西:向查詢添加多個參數

public int mysql_query_scalar(string query, parameters) 
    { 
      mysql_Open(); 
      MySqlCommand cmd = new MySqlCommand(); 
      cmd.Connection = mysql_connection; 
      cmd.CommandText = query; 
      cmd.Prepare(); 

      cmd.Parameters.AddWithValue(parameterfromstring, parameternumber); 

      mysql_Close(); 
      return int.Parse(cmd.ExecuteScalar().ToString()); 
    } 

現在,我想做的就是能夠儘可能多的參數加我就可以了,然後開始建立參數。這怎麼可能?如果是這樣,請告訴我或請給我一個片段。

我會很高興地感謝有人告訴我如何使用它。我對MySQL很新,我不是C#專家。

mysql_Open();和mysql_Close();是我自己做的功能。將它們引用爲mysql_connection.Open();和mysql_connection.Close();

+0

您是否嘗試過任何建議的解決方案? – fubo

回答

0

您可以使用擴展方法,像這樣:

public static class DbCommandExtensions 
{ 
    public static void AddInputParameters<T>(this IDbCommand cmd, 
     T parameters) where T : class 
    { 
     foreach (var prop in parameters.GetType().GetProperties()) 
     { 
      object val = prop.GetValue(parameters, null); 
      var p = cmd.CreateParameter(); 
      p.ParameterName = prop.Name; 
      p.Value = val ?? DBNull.Value; 
      cmd.Parameters.Add(p); 
     } 
    } 
} 

電話如下:

cmd.AddInputParameters(new { a = textBox1.Text, b = TextBox2.Text.... }); 
0

我會調用這個方法的方法:

List<SqlParameter> sList = new List<SqlParameter>(); 
sList.Add(new SqlParameter("@myValue", myValue)); 
sList.Add(new SqlParameter("@myValue2", myValue2)); 
mysql_query_scalar(myQuery, sList.ToArray()); 

,我會使用使用指令

public static int mysql_query_scalar(string Command, SqlParameter[] parameters) 
{ 
    using (MySqlConnection myConnection = new MySqlConnection(ConnectionString)) 
    { 
     myConnection.Open(); 
     using (MySqlCommand myCommand = new MySqlCommand(Command, myConnection)) 
     { 
      myCommand.Parameters.AddRange(parameters); // Add Parameters here 
      return (int)myCommand.ExecuteScalar(); 
     } 
    } 
}