Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 13.10.2010, 12:23   #1
BeJIuKuu_Hexo4yxa
Форумчанин
 
Регистрация: 13.10.2010
Адрес: Рязань
Сообщений: 96
Репутация: 52
По умолчанию 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
Сообщений: 24,351
Репутация: 5274
По умолчанию

никогда не работал с FireBird из под .NET
просто, в качестве метода тыка, а так пробовали?
Код:

fbCmd.Parameters.AddWithValue(":puser", pLogin);

обратите внимание на двоеточие...
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 13.10.2010, 14:53   #3
BeJIuKuu_Hexo4yxa
Форумчанин
 
Регистрация: 13.10.2010
Адрес: Рязань
Сообщений: 96
Репутация: 52
По умолчанию

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

ладно. А так попробуйте:
Код:

                       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
Репутация: 52
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача параметра в поток Sanprof Общие вопросы Delphi 10 08.07.2015 15: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 13:53


20:48.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru