DeriveParameters方法中的参数异常

时间:2010-07-20 08:15:53

标签: sql asp.net exception quotes argumentexception

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 个答案:

答案 0 :(得分:0)

我从未见过这个错误,但也许此链接有助于:http://entlib.codeplex.com/Thread/View.aspx?ThreadId=60513

“这是什么版本的entlib?对于接受sql语句的ExecuteReader 4.1中没有重载,有一个接受字符串但它应该是存储过程名称。可能你使用这个重载但我不是当然,如果我传递一个sql语句“

,我会得到一个不同的错误

答案 1 :(得分:0)

看起来代码的失败程度比您发布的代码更深层次。当我没有正确定义数据库的路径时,我在SQLServer Management Studio中收到了类似的错误。 你是如何设置对象'db'的?

你的连接字符串是什么? (没有密码!: - ))

错误显然与报价位置方面形成错误的字符串有关。你知道entlib在哪里构造这个字符串,以及它的部分如“C:\ sitepath”是用引号出现而不是作为字符串文字附加?

我想知道某个地方是否有声明,例如

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

..这导致引号被插入到构造的字符串中。

答案 2 :(得分:0)

我不知道错误,但NEWID()的订单让我感到困扰。使用newid()SQLServer为数据集中的每一行调用newid()函数。