Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
 Аватар для seneka
7 / 7 / 2
Регистрация: 28.09.2012
Сообщений: 82

Использование транзакции при работе с MySQL

04.12.2012, 07:25. Показов 3338. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Есть подключение к БД SQL в которой всего две таблицы
1 -TEST_TRANS -(имеет одно поле "snils")
2- TEST_TRANS_2-(имеет два поля "snils" и "Data")
происходит запись в таблицы следующим образом
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void InsertTEST_TRANS2()
        {
            String calcmixt = BDConnection;
            conn = new SqlConnection(calcmixt);
            OpenSqlConnection();
            using (SqlCommand sql = conn.CreateCommand())
            {
                sql.CommandText = @"INSERT INTO TEST_TRANS(Snils)VALUES (@p_Snils2)";
                sql.Parameters.Add("@p_Snils2", textBox1.Text);
                sql.CommandText = @"INSERT INTO TEST_TRANS_2(Snils,Data)VALUES (@p_Snils1,@p_data)";
                sql.Parameters.Add("@p_Snils1", textBox1.Text);
                sql.Parameters.Add("@p_data", textBox2.Text);
                sql.ExecuteNonQuery();
            }
            
        }
Подскажите как использовать транзакции в этом случае??????
Предположим:. Введем в textBox2 -некорректную дату тогда транзакция должна откатить назад и не допустить записи в таблицы. (Где нужно поставить Начало транзакции затем подтверждение и в случае неудачи откат???)
Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.12.2012, 07:25
Ответы с готовыми решениями:

транзакции в C# при работе с MySQL
Доброго времени суток. В общем проблема такая. Пытаюсь использовать механизм транзакций в своем проекте. Все делаю, как написано в справке...

Использование показателей при работе с массивами
n натуральное, a1,...,an действительные числа. Найти : a1a2n+a2a2n-1+...+anan+1

Использование ajax при работе с формами и бд
Добрый вечер! У меня написан на чистом php такой демо-пример http://example.book-fan.ru/index.php для работы с базой данной, которая...

10
 Аватар для XIST
1960 / 1070 / 148
Регистрация: 01.10.2009
Сообщений: 3,594
Записей в блоге: 1
04.12.2012, 07:57
а какой механизм хранения используете?
0
 Аватар для seneka
7 / 7 / 2
Регистрация: 28.09.2012
Сообщений: 82
04.12.2012, 08:34  [ТС]
Цитата Сообщение от DM_AND Посмотреть сообщение
а какой механизм хранения используете?
эм.....
Хранение данных происходит на SQL-сервере.
Хотел попробовать использование транзакции..
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
04.12.2012, 09:30
Перед вставками вызываете BeginTransaction, выставляете свойство Transaction у всех выполняемых команд.
Оборачиваете ваши вставки в try-catch. В случае ошибки вызываете Rollback(), в случае успеха Commit().
Вот тут есть пример - http://msdn.microsoft.com/ru-r... 73566.aspx

PS. SqlCommand/SqlConnection вроде используется для работы с MS SQL server, а не с MySQL.
1
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
04.12.2012, 09:37
Цитата Сообщение от seneka
Хранение данных происходит на SQL-сервере.
Хотел попробовать использование транзакции..
Таблица в MySQL может использовать 2 движка: MyISAM и InnoDB. Один из них поддерживает транзакции, другой нет.
1
 Аватар для seneka
7 / 7 / 2
Регистрация: 28.09.2012
Сообщений: 82
04.12.2012, 10:47  [ТС]
Ну вот как то так получилось.. наверно немного лишнего и можно как то сократить НО работает
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 public void InsertTEST_TRANS2()
        {
            String calcmixt = BDConnection;
            conn = new SqlConnection(calcmixt);
            OpenSqlConnection();
            using (SqlCommand sql1 = conn.CreateCommand())
            {
                using (SqlCommand sql2 = conn.CreateCommand())
                {
                    SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
 
                    sql1.CommandText = @"INSERT INTO TEST_TRANS(Snils)VALUES (@p_Snils2)";
                    sql1.Parameters.Add("@p_Snils2", textBox1.Text);
                    sql1.Transaction = transaction; 
 
                    sql2.CommandText = @"INSERT INTO TEST_TRANS_2(Snils,Data)VALUES (@p_Snils1,@p_data)";
                    sql2.Parameters.Add("@p_Snils1", textBox1.Text);
                    sql2.Parameters.Add("@p_data", textBox2.Text);
                    sql2.Transaction = transaction; 
                    try
                    {
                        sql1.ExecuteNonQuery();
                        sql2.ExecuteNonQuery();
                        transaction.Commit();
                    }
                    catch
                    {
                       transaction.Rollback();
                    }
                }
            }
            
        }
Цитата Сообщение от Grossmeister Посмотреть сообщение
Таблица в MySQL может использовать 2 движка: MyISAM и InnoDB
а есть ли возможность посмотреть конкретную таблицу какой движок используется?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
04.12.2012, 11:45
Цитата Сообщение от seneka Посмотреть сообщение
а есть ли возможность посмотреть конкретную таблицу какой движок используется?
Еще раз спрошу, вы уверены что вы используете именно MySQL, а не MS SQL?
Классы SqlCommand/SqlCommand используются именно для MS SQL.
0
 Аватар для seneka
7 / 7 / 2
Регистрация: 28.09.2012
Сообщений: 82
04.12.2012, 12:54  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Еще раз спрошу, вы уверены что вы используете именно MySQL, а не MS SQL?
MSSQL
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
04.12.2012, 12:58
Цитата Сообщение от seneka Посмотреть сообщение
MSSQL
Ну вот, а что же вы людей в заблуждение вводите. Тогда вопросы DM_AND и Grossmeister теряют актуальность.
0
 Аватар для seneka
7 / 7 / 2
Регистрация: 28.09.2012
Сообщений: 82
05.12.2012, 04:50  [ТС]
Прошу прощения я никого не хотел ввести в заблуждение.. ( так получилось)
0
 Аватар для XIST
1960 / 1070 / 148
Регистрация: 01.10.2009
Сообщений: 3,594
Записей в блоге: 1
05.12.2012, 08:17
Цитата Сообщение от Grossmeister Посмотреть сообщение
Таблица в MySQL может использовать 2 движка: MyISAM и InnoDB. Один из них поддерживает транзакции, другой нет.
Да не их больше
MyISAM
Archive
CSV
Memory (HEAP)
MERGE
FEDERATED
BLACKHOLE
и это только основные
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.12.2012, 08:17
Помогаю со студенческими работами здесь

Использование FCB при работе с файлами
Здравствуйте! Я не понимаю как указать на FBC для FCB функций int 21h. Пробовала ссылаться на адрес FCB (5Ch), но не...

Использование показателей при работе с массивами
Даны a1,...,an действительные числа, n* натуральное число. Если в этой последовательности присутствуют три меньших числа,вывести на экран...

Использование указателей при работе с массивами
Здесь двумерный массив, теперь надо написать его с использованием указателей. У меня не получается. Помогите пожалуйста!!! ...

Использование Random при работе с массивами
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication27 { ...

Использование функций при работе со строками
Удалить из строки слова, содержащие повторяющиеся символы помогите пожалуйста


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru