Исключение аргумента в методе DeriveParameters

Dim id as integer = 1
Dim command as sqlcommand
Dim reader as idatareader

command = db.GetSqlStringCommand("select id, image, caption from profile where id = @id and image IS NOT NULL Order By NEWID()")
db.AddInParameter(command, "@id", DbType.Int32, id)
reader = db.ExecuteReader(Command)

Код выдает ошибку, которую я никогда не видел раньше....

Ошибка SqlCommand.DeriveParameters, так как значением свойства SqlCommand.CommandText является недопустимое многочастное имя "/port:4544 /path:"C:\sitepath" /vpath:"/sitepath"", неправильное использование кавычек.

Как я могу исправить эту ошибку.

3 ответа

Решение

Похоже, что код не работает на более глубоком уровне, чем код, который вы опубликовали. Я получил аналогичную ошибку из SQLServer Management Studio, когда не правильно определил путь к моей БД. Как вы настраиваете объект 'db'?

Какая у вас строка подключения? (Без пароля!:-))

Ошибка явно связана с плохо сформированной строкой в ​​терминах позиций кавычек. Знаете ли вы, где entlib создает эту строку и как ее части, такие как "C:\sitepath", отображаются в кавычках, а не добавляются в виде строковых литералов?

Интересно, есть ли где-нибудь объявление, такое как

Dim sRootPath As String = """C:\sitepath"""

.. который приводит к вставке кавычек в созданную строку.

Я не знаю об ошибке, но заказ NEWID() меня немного беспокоит. С помощью newid() SQLServer вызывает функцию newid () для каждой строки в вашем наборе данных.

Я никогда не видел эту ошибку, но, возможно, эта ссылка помогает: http://entlib.codeplex.com/Thread/View.aspx?ThreadId=60513

"Какая версия entlib? Это не перегрузка в 4.1 для ExecuteReader, который принимает оператор SQL, есть один, принимающий строку, но это должно быть имя хранимой процедуры. Возможно, вы используете эту перегрузку, но я не уверен, так как я я получаю другую ошибку, если я передаю SQL заявление

Другие вопросы по тегам