2014-10-02 2 views
1

У меня есть следующий код, где я в основном беру данные из mysql и plonking на SQL-сервере.mySQL через C# запись данных в базу данных

Часть SQL-сервера работает нормально, но я не могу решить, как отключить подключение mysql для обновления. Когда он делает MySQL выполнить читатель в цикле Еогеаспа это бездельники с ошибкой:

An unhandled exception of type 'System.InvalidOperationException' occurred in MySql.Data.dll 

Additional information: Connection must be valid and open. 

Код:

DB db = new DB(); 
      String sConfig_hostname = 
      String sConfig_dbname = 
      String sConfig_dbusername = 
      String sConfig_dbpassword = 
      string MyConString = "SERVER=" + sConfig_hostname + ";" + 
       "DATABASE=" + sConfig_dbname + ";" + 
       "UID=" + sConfig_dbusername + ";" + 
       "PASSWORD=" + sConfig_dbpassword + ";Allow Zero Datetime=true;"; 
      MySqlConnection connection = new MySqlConnection(MyConString); 
      string sQuery="Select * from inbox where Transferred = 0"; 

      MySqlDataAdapter myDA = new MySqlDataAdapter(sQuery, connection); 
      MySqlCommandBuilder cmb=new MySqlCommandBuilder(myDA); 

      DataTable MyDT = new DataTable(); 
      myDA.Fill(MyDT); 

      foreach (DataRow row in MyDT.Rows) 
      { 
       String SQL = String.Format("Insert into Inbox (Message, Received, Sender) VALUES ('{0}', '{1}', '{2}')", GeneralFunctions.SQLescape(row["TextDecoded"].ToString()), row["ReceivingDateTime"].ToString(), row["SenderNumber"].ToString()); 
       String mySQL = "Update inbox set Transferred = 1 where ID = " + row["ID"].ToString(); 
       db.Update(SQL); 

       MySqlCommand SQLup = new MySqlCommand(mySQL); 
       MySqlDataReader reader = SQLup.ExecuteReader(); 

      } 

ответ

1

Причина это провал, потому что вы не хотите, чтобы выполнить читатель здесь , вы просто хотите выполнить оператор и, потому что вы не инициализации команды с подключением:

MySqlConnection connection = new MySqlConnection(MyConString); 
connection.Open(); 

... 

MySqlCommand SQLup = new MySqlCommand(mySQL, connection); 
SQLup.ExecuteNonQuery(); 
+0

А - Это имеет смысл. Я изменил это, но, к сожалению, ту же ошибку: Дополнительная информация: Соединение должно быть действительным и открытым. connection isnt null в этот момент, и это информация для записи – TMB87

+0

@Tom, пожалуйста, см. мое редактирование. –

+0

@ Ты можешь переместить эту линию и, вероятно, должен переместить эту линию, прямо под конструкцию 'MySqlConnection'. –

2
MySqlConnection connection = new MySqlConnection(MyConString); 
connection.open(); // insert this line 

для более information

Смежные вопросы