Darsh12345 Ответов: 1

Mysql query отлично работает в mysql workbench, но не в кодировании C#


mysql query is running fine in mysql workbench but not in c# coding


Что я уже пробовал:

select unitstat.unitgroup,unitstat.tagno, od.status, unitstat.totalcount as DriftCount, unitstat.implication, unitstat.operparam
                           from (
                          select om.unitcode, concat(ifnull(om.unitgroup, ''),'(',ifnull(om.shortunitdesc, ''),')') as unitgroup,oh.tagno, count(*) totalcount, oc.implication,oc.operparam
                           from oehistory oh, oeunitmaster om, oeconfig oc
                           where om.unitcode = oh.unitcode and oh.unitcode=oc.unitcode and oh.tagno=oc.tagno
                           and timestamp between str_to_date ('" + txtFromDate.Text + "', '%d-%b-%y') and str_to_date ('" + txtToDate.Text + "', '%d-%b-%y')";
            strDetails += @" group by om.unitgroup, om.unitcode, om.unitname,om.shortunitdesc, oh.tagno,oc.implication, oc.operparam
                             order by om.unitgroup, om.unitname, oh.tagno
                             ) unitstat, oedata od
                            where od.unitcode = unitstat.unitcode
                            and od.tagno = unitstat.tagno and unitstat.totalcount > 2
                            order by od.status

Christian Graus

Это ваш вопрос. Если он работает нормально, то проблема заключается в коде C#, который вы не опубликовали.

Darsh12345

проблема в том, что запрос отлично работает на mysql workbench, но не отображает выходные данные на странице .net

1 Ответов

Рейтинг:
1

OriginalGriff

Не делай этого так! Никогда не объединяйте строки для построения команды SQL. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого всегда используйте параметризованные запросы.

Когда вы объединяете строки, вы вызываете проблемы, потому что SQL получает такие команды, как:

SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
Цитата, добавленная пользователем, завершает строку в том, что касается SQL, и вы получаете проблемы. Но могло быть и хуже. Если я приду и наберу вместо этого: "x';DROP TABLE MyTable;--", то SQL получит совсем другую команду:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'
Которые SQL видит как три отдельные команды:
SELECT * FROM MyTable WHERE StreetAddress = 'x';
Совершенно правильный выбор
DROP TABLE MyTable;
Вполне допустимая команда "удалить таблицу"
--'
А все остальное-это комментарии.
Так оно и происходит: выбирает любые совпадающие строки, удаляет таблицу из базы данных и игнорирует все остальное.

Поэтому всегда используйте параметризованные запросы! Или будьте готовы часто восстанавливать свою БД из резервной копии. Вы ведь регулярно делаете резервные копии, не так ли?