powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# как выполнить сразу несколько запросов sql?
13 сообщений из 13, страница 1 из 1
C# как выполнить сразу несколько запросов sql?
    #39868339
Serg58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, вопрос скорее-всего простой, но никак не соображу...

Есть объединённый запрос SQL:
Код: sql
1.
2.
3.
4.
SET @param1=1, @param2=100;
SELECT @id:=`id` FROM `table_name` WHERE `Buy` IS NOT NULL LIMIT 1;
UPDATE `table_name` SET
`sell` = IF(id>@id, param1 * param2, param1 + param2);


То есть сначала мы задаём 2 статичных параметра(@param1 и @param2)
Потом мы смотрим в другой таблице параметр @id
и использую вышеперечисленные значения делаем UPDATE

Вот такая конструкция в C#:
Код: c#
1.
2.
3.
4.
5.
6.
7.
var Test = new MySql.Data.MySqlClient.MySqlCommand();
Test.CommandText = "SET @param1=1, @param2=100; SELECT @id:=`id` FROM `table_name` WHERE `Buy` IS NOT NULL LIMIT 1;UPDATE `table_name` SET `sell` = IF(id>@id, param1 * param2, param1 + param2);";
var connectionSTring = "server=localhost;port=3306;user=user1;database=testdb;password=test;";
BackTest.Connection = new MySql.Data.MySqlClient.MySqlConnection(connectionSTring);
BackTest.Connection.Open();
BackTest.ExecuteNonQuery();
BackTest.Connection.Close();



Выдаёт ошибку: CSharp OwnCode. Fatal error encountered during command execution.

Ругается, получается, именно на то, что подряд несколько запросов. Как их объединить в один?
Уточню: что получать результаты как бы и нет необходимости, главное что бы в базе изменил значения, может другой метод необходимо использовать? Или как-то через BEGIN...END запрос передавать?

Добавлю, что я сначала пошёл по пути создания хранимой процедуры в базе данных, этот вариант сработал....но будет слишком много баз данных и создавать в каждой из них хранимую процедуру на мой взгляд - костыль. Может есть более тривиальное решение?

Ещё пытался переписать запрос в единый UPDATE, от статических параметров получилось избавиться, а вот параметр который получаем через SELECT - не получается :(
...
Рейтинг: 0 / 0
C# как выполнить сразу несколько запросов sql?
    #39868346
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg58Выдаёт ошибку: CSharp OwnCode. Fatal error encountered during command execution.

Ругается, получается, именно на то, что подряд несколько запросовА текст сообщения говорит о просто какой-то ошибке. Ни слова про несколько выражений подряд.

Serg58Как их объединить в один?Выражения в MySQL объединяют через BEGIN ... END

то есть вместо:
Код: c#
1.
2.
var Test = new MySql.Data.MySqlClient.MySqlCommand();
Test.CommandText = "SET @param1=1, @param2=100; SELECT @id:=`id` FROM `table_name` WHERE `Buy` IS NOT NULL LIMIT 1;UPDATE `table_name` SET `sell` = IF(id>@id, param1 * param2, param1 + param2);";


получаем:
Код: c#
1.
2.
3.
4.
5.
6.
var Test = new MySql.Data.MySqlClient.MySqlCommand(@"
BEGIN
  SET @param1=1, @param2=100;
  SELECT @id:=`id` FROM `table_name` WHERE `Buy` IS NOT NULL LIMIT 1;
  UPDATE `table_name` SET `sell` = IF(id>@id, param1 * param2, param1 + param2);
END;");
...
Рейтинг: 0 / 0
C# как выполнить сразу несколько запросов sql?
    #39868746
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Serg58Ругается, получается, именно на то, что подряд несколько запросов. Как их объединить в один?
Использовать хранимую процедуру
...
Рейтинг: 0 / 0
C# как выполнить сразу несколько запросов sql?
    #39868750
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто выполнить запрос не из приложения пробовал?
...
Рейтинг: 0 / 0
C# как выполнить сразу несколько запросов sql?
    #39868989
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Serg58Ругается, получается, именно на то, что подряд несколько запросов. Как их объединить в один?
Использовать хранимую процедуру
Serg58я сначала пошёл по пути создания хранимой процедуры в базе данных, этот вариант сработал....но будет слишком много баз данных и создавать в каждой из них хранимую процедуру на мой взгляд - костыль. Может есть более тривиальное решение?
...
Рейтинг: 0 / 0
C# как выполнить сразу несколько запросов sql?
    #39870048
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Дмитрий МухCat2пропущено...

Использовать хранимую процедуру
Serg58я сначала пошёл по пути создания хранимой процедуры в базе данных, этот вариант сработал....но будет слишком много баз данных и создавать в каждой из них хранимую процедуру на мой взгляд - костыль. Может есть более тривиальное решение?
Ну можно последовательно выполнять запросы с клиента в открытой на клиенте транзакции, передавая в последующие запросы результаты предыдущих.
"Слишком много баз данных" - я так понимаю, что имеется ввиду разных СУБД. Реально их будет не более пяти, а скорее всего двух.



Как -то я сомневаюсь, что написанная автором нетленка перевернет мир учетных систем и все ломануться на нее.
...
Рейтинг: 0 / 0
C# как выполнить сразу несколько запросов sql?
    #39870060
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2"Слишком много баз данных" - я так понимаю, что имеется ввиду разных СУБД.
Нет, именно баз данных MySQL
...
Рейтинг: 0 / 0
C# как выполнить сразу несколько запросов sql?
    #39872780
Serg58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за ответы, решил свою проблему переписав исходный запрос вот так:

Код: sql
1.
2.
UPDATE `table_name`, (SELECT @param1:=1, @param2:=100), (SELECT @id:=`id` FROM `table_name` WHERE `Buy` IS NOT NULL LIMIT 1)  SET
`sell` = IF(id>@id, param1 * param2, param1 + param2);




то есть всё объединил в единый запрос и заработало
...
Рейтинг: 0 / 0
C# как выполнить сразу несколько запросов sql?
    #39873013
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Уважаемые новички! Если у вас возникнет подобный вопрос, то не надо делать так, как сделал Serg58
...
Рейтинг: 0 / 0
C# как выполнить сразу несколько запросов sql?
    #39873148
Serg58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2...то не надо делать так, как сделал Serg58
если не секрет, почему?

Использовать хранимую процедуру не очень удобно, будет множество(тысячи) баз данных (Вам выше правильно подсказали, что сервер один, единая MySQL, но базы данных будут разные).


Так же добавлю, что предложение:
авторпередавая в последующие запросы результаты предыдущих.
не подходит. В оригинальном запросе идёт ряд расчётов и следующие расчёты зависят от них.
Допустим, есть таблица, мы начинаем искать нужное значение по условию, найдя значение ищем дальше в таблице подходящую пару для этого значения, потом производим над этими строками определённые математические действия и результат дописываем ко второй строке.
То есть результат предыдущего запроса актуален прямо здесь и сейчас, в рамках одного запроса.
...
Рейтинг: 0 / 0
C# как выполнить сразу несколько запросов sql?
    #39873158
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg58множество(тысячи) баз данных

У вас там Ктулху всплыл? Чо это за чудище такое?
...
Рейтинг: 0 / 0
C# как выполнить сразу несколько запросов sql?
    #39873172
Serg58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat, если я правильно понял, просчёт результатов финансовых котировок биржи
...
Рейтинг: 0 / 0
C# как выполнить сразу несколько запросов sql?
    #39873409
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg58fkthat, если я правильно понял, просчёт результатов финансовых котировок биржи

Настроения(ц) тем клиентам, чьи котировки будут так просчитываться
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# как выполнить сразу несколько запросов sql?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]