Russian Qt Forum

Qt => Базы данных => Тема начата: masha от Июль 09, 2010, 14:46



Название: Запрос с параметром
Отправлено: masha от Июль 09, 2010, 14:46
Почему вот так парметр не присоединяется:

   QString strQuery = "CREATE LOGIN [?] FROM WINDOWS";
           // QString strQuery = "EXEC sp_grantlogin ?";
   query.prepare(strQuery);
           query.addBindValue(user_name);   // = "D15\\igor"

пишет:
[Microsoft][ODBC SQL Server Driver][SQL Server]'?' is not a valid Windows NT name. Give the complete name: <domain\username>. QODBC3: Невозможно выполнить запрос, msg: 15407

а так присоединяется:

   QString strQuery = QString("CREATE LOGIN [%1] FROM WINDOWS").arg("D15\\igor");
   query.prepare(strQuery);


Название: Re: Запрос с параметром
Отправлено: 0xFF от Июль 09, 2010, 15:04
Может так?
Код
C++ (Qt)
QString strQuery = "CREATE LOGIN [:user] FROM WINDOWS";
query.prepare(strQuery);
query.bindValue(":user", user_name);


Название: Re: Запрос с параметром
Отправлено: masha от Июль 09, 2010, 16:34
нет, всё та же ошибка :)


Название: Re: Запрос с параметром
Отправлено: SABROG от Июль 09, 2010, 17:31
Возможно дело в синтаксисе запроса, обычный "INSERT INTO" работает? Может быть биндинг работает только с определенным набором команд.


Название: Re: Запрос с параметром
Отправлено: MoPDoBoPoT от Июль 09, 2010, 17:56
"CREATE" относится к DDL-операторам, а биндинг возможен только в DML (SELECT, INSERT, DELETE, EXECUTE, CALL ...).


Название: Re: Запрос с параметром
Отправлено: masha от Июль 09, 2010, 18:08
спасибо большое :)