Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2010, 12:23   #1
BeJIuKuu_Hexo4yxa
Пользователь
 
Регистрация: 13.10.2010
Сообщений: 96
По умолчанию FireBird. Передача параметра в SQL

Как передать параметр в SQL запрос?
БД Firebird 2.0, клиент на C#.

Код:
using FirebirdSql.Data;
using FirebirdSql.Data.FirebirdClient;


        [WebMethod]
        // Test
        public int TestFireBird(string pLogin)
        {
            int pCounter = 0;
            try
            {
                string InData = "pLogin: " + pLogin + ";";

                FbConnection fbConnection = new FbConnection(System.Configuration.ConfigurationManager.ConnectionStrings["FB"].ConnectionString);
                using (fbConnection)
                {
                    fbConnection.Open();
                    FbCommand fbCmd = new FbCommand();
                    using (fbCmd)
                    {
                        fbCmd.Connection = fbConnection;

                        fbCmd.CommandText = "SELECT count(*) FROM USERS t WHERE t.user_login = :puser";
                        fbCmd.Parameters.AddWithValue("puser", pLogin);
                        pCounter = Int32.Parse(fbCmd.ExecuteScalar().ToString());

                        fbCmd.Dispose();
                    }
                    fbConnection.Dispose();
                }
                return 0;
            }
            catch (Exception E)
            {
                return -1;
            }
        }
При выполнении выпадает ошибка:

Код:
Dynamic SQL Error
SQL error code = -206
Column unknown
PUSER
No message for error code 336397208 found
Если вызвать запрос без параметра, отрабатывает нормально.
Команда fbCmd.Parameters.AddWithValue("puse r", pLogin) тоже параметр записывает, а ExecuteScalar не выполняется.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. (Стив Макконнелл)

Последний раз редактировалось BeJIuKuu_Hexo4yxa; 13.10.2010 в 13:07.
BeJIuKuu_Hexo4yxa вне форума Ответить с цитированием
Старый 13.10.2010, 14:42   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

никогда не работал с FireBird из под .NET
просто, в качестве метода тыка, а так пробовали?
Код:
fbCmd.Parameters.AddWithValue(":puser", pLogin);
обратите внимание на двоеточие...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.10.2010, 14:53   #3
BeJIuKuu_Hexo4yxa
Пользователь
 
Регистрация: 13.10.2010
Сообщений: 96
По умолчанию

Не помогает (((
Вообще, двоеточие как раз используется в динамических SQL запросах для параметров.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. (Стив Макконнелл)
BeJIuKuu_Hexo4yxa вне форума Ответить с цитированием
Старый 13.10.2010, 15:27   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ладно. А так попробуйте:
Код:
                       fbCmd.CommandText = "SELECT count(*) FROM USERS t WHERE t.user_login = @puser";
                        fbCmd.Parameters.AddWithValue("@puser", pLogin);
                        pCounter = Int32.Parse(fbCmd.ExecuteScalar().ToString());
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.10.2010, 16:15   #5
BeJIuKuu_Hexo4yxa
Пользователь
 
Регистрация: 13.10.2010
Сообщений: 96
По умолчанию

Спасибо! Заработало!
Сам бы ни за что не догадался. В описании про вызов параметров сказано, что используется ":" и "?", а про "@" ничего.
Да и в самом FB исходный запрос с двоеточием отрабатывал.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. (Стив Макконнелл)
BeJIuKuu_Hexo4yxa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача параметра в поток Sanprof Общие вопросы Delphi 10 08.07.2015 14:11
передача параметра в конструктор пауэрлифтинг Общие вопросы Delphi 2 27.04.2010 21:27
передача параметра по ссылке veter_s_morya PHP 7 18.10.2009 16:43
Передача функции как параметра ezus Общие вопросы C/C++ 2 24.08.2009 10:19
Передача параметра в поток joker Win Api 10 22.12.2007 12:53