2015-01-31 4 views
-1

Я пишу приложение C#, где я вставляю значения в таблицы Mssql и Mysql. Без Mssql.If сервер Mssql не отключается, он не вставляет это значение в таблицу Mssql.MySQL вставляет строку, даже если отключен

Но в Mysql, если сервер Mysql отключается во время операции вставки, значение иногда вставляется. Исключение MysqlException происходит в случае отключения сервера Mysql, но иногда это значение вставлено.

Вот отрывок из кода:

try 
{ 
    mysqlConn.Open(); 
    MySqlCommand command = new MySqlCommand(); 
    command.Connection = mysqlConn; 
    command.CommandText = //INSERT INTO TABLE 
    command.ExecuteNonQuery(); 
}catch (MySqlException ex){ 
    Console.WriteLine("MYSQL Exception: " + ex.Message); 
}catch (Exception ex){ 
    Console.WriteLine("MYSQL Exception: " + ex.Message); 
}finally{ 
    mysqlConn.Close(); 
} 

Как я могу гарантировать, что значение вставляется в Mysql таблицы, только если нет отключения во время работы и не вставляется, если есть отключение во время операции?

+1

Я удивлен, что соединение будет очень часто теряться за время, затрачиваемое на простую вставку, и что оно все равно будет вставлено, если оно отключится. Возможно, вставка в явную транзакцию поможет. В противном случае, возможно, вам нужно будет выбрать данные, чтобы проверить, правильно ли они были добавлены? – Rhumborl

+0

@Rhumborl Я запускаю командные файлы с C#, чтобы отключать Mssql и Mysql с разными интервалами в произвольные моменты времени, чтобы проверить, работает ли программа, даже если базы данных отключены. Если Mysql отключен во время работы, он не выполняет операцию вставки в обратном порядке, а с Mssql I haven ' t столкнулся с какой-либо проблемой. Я попытался выбрать данные после операции вставки, но все же, если есть отключение во время операции выбора, оно не будет работать правильно. Вы имеете в виду, что я должен написать транзакцию в Mysql и вызвать ее из C#, чтобы Mysql отключал соединение? – freelancer86

ответ

0

Я решил проблему, добавив уникальный ключ в поле в базе данных Mysql, чтобы ни одна строка не была вставлена ​​несколько раз.

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