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

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

04.12.2012, 07:25. Показов 3318. Ответов 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 / 1061 / 148
Регистрация: 01.10.2009
Сообщений: 3,589
Записей в блоге: 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 / 1061 / 148
Регистрация: 01.10.2009
Сообщений: 3,589
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru