2016-07-23 2 views
2

Итак, после многих часов обучения MySQL и попытки заставить мой код работать. Я нашел по крайней мере два разных способа настройки SQL Command. Из этого, я надеюсь, общий вопрос в MySQL с использованием C#.C# и MySQL Command - два разных силла?

В чем разница между этими двумя командами:

MySqlCommand cmd = new MySqlCommand(); 
cmd.Connection = conn; 

и

MySqlCommand cmd; 
cmd = conn.CreateCommand(); 
cmd.Connection = conn; 

предпочтительнее другой?

Я запустил оба и оба, похоже, отлично вставляют данные в таблицу db. Я не знаю, если это поможет ответить на него, но вот мой код:

public static void AddSong(Songs s) 
    { 
     MySqlConnection conn; 
     string myConnectionString; 

     myConnectionString = "server=127.0.0.1;uid=root;" + 
      "pwd=mysql;database=MySQL_TestDB;"; 

     conn = new MySqlConnection(); 
     conn.ConnectionString = myConnectionString; 

      try 
      { 
       conn.Open(); 
      } 
      catch (MySqlException ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 


     string query = "INSERT INTO Songs (Title, Artist) VALUES (" + 
        "@Title, " + 
        "@Artist)"; 

     /* 
     MySqlCommand cmd; 
     cmd = conn.CreateCommand(); 
     cmd.Connection = conn; 
     */ 

     MySqlCommand cmd = new MySqlCommand(); 
     cmd.Connection = conn; 
     cmd.CommandText = query; 

     cmd.Parameters.AddWithValue("@Title", s.Name); 
     cmd.Parameters.AddWithValue("@Artist", s.Artist); 
     cmd.ExecuteNonQuery(); 

     conn.Close(); 
    } 
+1

Я думаю, что это тот же вопрос, как ваша http://stackoverflow.com/questions/1302855/is-there-any-difference-between-sqlconnection-createcommand-and-new-sqlcommand – Terminus

+0

@Terminus, Wow , Я действительно потратил почти 20 минут на поиск ответа. Я просто не знал, что набрать. Благодаря! –

+1

Я искал 'C# разницу между sql command и createcommand' первым результатом для меня. Несколько интересных интересных результатов после – Terminus

ответ

1

NO, AFAIK они оба такие же, и делает то же самое. conn.CreateCommand() фактически возвращает новый экземпляр MySqlCommand.

Как Documentation ясно говорит

Создает и возвращает объект SqlCommand, связанный с SqlConnection.

+0

Спасибо @Rahul и @Termininus! –

+0

Хотя связанная документация предназначена для 'SqlCommand', но это будет одинаковое поведение для класса MySqlCommand. – Rahul

+0

Мне интересно, если это было сделано специально? Я использую SqlCommand с использованием MS SQL Server и просто начал использовать MySQL. Мне пришлось изменить несколько таких вещей, как вы упомянули «MySqlCommand», и напуганную вещь со строкой соединения (которая навсегда зацепилась). Еще раз спасибо. –