powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / C# Mysql
9 сообщений из 9, страница 1 из 1
C# Mysql
    #38476773
Фотография Daedroth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую. У меня такая проблема, пытаюсь получить запрос из БД MySql, но получаю ошибку.
Вот код запроса C#
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
cnn.Open();
                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection = cnn;
                cmd.CommandText = "select df.* from    dfhistory df,    ( select @test := @test+1 as rank, id, mod(@test,@step) as m from dfhistory ) tx where     tx.id=df.id     AND tx.m=0     and STR_TO_DATE(df.instr_date,'%c/%d/%Y %T') <= SYSDATE() - interval @time hour     and STR_TO_DATE(df.instr_date,'%c/%d/%Y %T') >= SYSDATE() - interval @time hour - interval @interv hour";
                cmd.Parameters.AddWithValue("@test", 0);
                cmd.Parameters.AddWithValue("@step", Convert.ToInt32(step));
                cmd.Parameters.AddWithValue("@time", Convert.ToInt32(time));
                cmd.Parameters.AddWithValue("@interv", Convert.ToInt32(interval));
                cmd.Parameters.AddWithValue("@name", name);
                MySqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    WidgetInfo wInfo = new WidgetInfo();
                    wInfo.name = reader.GetString(1);
                    wInfo.bid = reader.GetString(3);
                    wInfo.ask = reader.GetString(4);
                    wInfo.date = reader.GetString(5);
                    lst.Add(wInfo);
                }
                cnn.Close();



А вот ошибка
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':= 0+1 as rank, id, mod(0,5) as m from dfhistory ) tx where tx.id=df.id ' at line 1

В MySql этот запрос обрабатывается без ошибки.
...
Рейтинг: 0 / 0
C# Mysql
    #38477272
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Daedroth,

Вот это :
Код: sql
1.
@test := @test+1



недопустимая конструкция.

Ну и вообще, использовать переменные в запросах как бы плохо.
...
Рейтинг: 0 / 0
C# Mysql
    #38477321
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
топикстартер случайно не перепутал MsSql и MySql?
...
Рейтинг: 0 / 0
C# Mysql
    #38477641
Фотография Daedroth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

А почему в MySql это работает в таком виде
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
set @test = 0;

select
      df.*
from
    dfhistory df,
    ( select @test := @test+1 as rank, id, mod(@test,5) as m from dfhistory ) tx
where
     tx.id=df.id
     AND tx.m=0
    and STR_TO_DATE(df.instr_date,'%c/%d/%Y %T') <= SYSDATE() - interval 72 hour
    and STR_TO_DATE(df.instr_date,'%c/%d/%Y %T') >= SYSDATE() - interval 72 hour - interval 24 hour
    and df.instr_name = @name



Собственно мне нужно по дате брать каждую N-ую строку, потому я использую
Код: sql
1.
select @test := @test+1 as rank, id, mod(@test,5) as m from dfhistory 


И в where проверяю что бы остаток был равен нулю
Код: sql
1.
tx.m=0


Если есть какой-то другой способ сделать то что я хочу, то поделитесь пожалуйста.
...
Рейтинг: 0 / 0
C# Mysql
    #38477643
Фотография Daedroth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

Нет не перепутал :)
...
Рейтинг: 0 / 0
C# Mysql
    #38478213
Фотография Daedroth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема РЕШЕНА!!!!!!!!!!!
Оказалось, что в Connection String нужно было вписать Allow User Variables=True
Всем спасибо.
...
Рейтинг: 0 / 0
C# Mysql
    #38478460
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Daedroth,

И что, там именно ':=', не '=' ?
...
Рейтинг: 0 / 0
C# Mysql
    #38478464
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaedrothПроблема РЕШЕНА!!!!!!!!!!!

Да не, парень, проблемы у тебя только начинаются...
...
Рейтинг: 0 / 0
C# Mysql
    #38478471
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Daedroth, объясни в подробностях,
как ты думаешь, как это

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
set @test = 0;

select
      df.*
from
    dfhistory df,
    ( select @test := @test+1 as rank, id, mod(@test,5) as m from dfhistory ) tx
where
     tx.id=df.id
     AND tx.m=0
    and STR_TO_DATE(df.instr_date,'%c/%d/%Y %T') <= SYSDATE() - interval 72 hour
    and STR_TO_DATE(df.instr_date,'%c/%d/%Y %T') >= SYSDATE() - interval 72 hour - interval 24 hour
    and df.instr_name = @name



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


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