Я работаю над большим проектом с большим количеством форм, используя BDE и ODBC для подключения к базе данных MySQL.Delphi 2010, проблема с параметром BDE, AsString, AsAnsiString
Я могу скомпилировать его в Delphi 2009, и он отлично работает. Когда я компилирую его в Delphi 2010, ничего не работает, потому что TQuery не может правильно передать значения параметров.
Вот пример:
txtUsername.Text = 'Admin';
Query1.Close;
Query1.SQL.Text = 'Select Count(*) From Tbl_User where Username = :username';
Query1.ParamByName('username').AsString = txtUsername.Text;
Query.Open();
SQL, будет отправлен в MySQL, выглядит следующим образом:
Select Count(*) From Tbl_User where Username = 'A'
только первый символ параметра будет отправлено на сервер: 'A' вместо 'Admin'
Но если я использую
Query1.ParamByName('username').AsAnsiString , then
он будет отлично работает и параметр будет отправлен полностью:
Select Count(*) From Tbl_User where Username = 'Admin'
Есть огромное количество TQuery и TTable в проекте и его невозможно изменить все вызовы AsString к AsAnsiString.
Есть ли решение для этого? любые настройки, чтобы заставить его работать нормально? возможно, заставив его использовать Ansi по умолчанию вместо Unicode?
Я попытался найти некоторую настройку в опции компиляции и изменить параметры ODBC, но ни один из них не работал.
Любая помощь будет оценена по достоинству.
«его невозможно изменить все вызовы AsString на AsAnsiString». Конечно, если у вас есть источник вашего проекта. – MartynA
Извините за OT, но, возможно, это момент, чтобы избавиться от устаревшего BDE. Я знаю, что это большая работа. – bummi
У меня есть источник, но он не является доступным, его трудоемким и дорогостоящим, и мой клиент не пойдет на это. Есть более 200 форм и тысячи строк кода. С другой стороны, отправка параметров строки не является единственной проблемой. Есть много подобных проблем со строкой. – QProgrammer