0
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"",引号使用不正确。

我该如何解决这个错误。

4

3 回答 3

0

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

“这是什么版本的entlib?对于接受sql语句的ExecuteReader,4.1中没有重载,有一个接受字符串但它应该是存储过程名称。可能你正在使用这个重载,但我不确定,因为我如果我通过一个 sql 语句,我会得到一个不同的错误”

于 2010-07-20T08:19:53.730 回答
0

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

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

就引用位置而言,该错误显然与格式错误的字符串有关。你知道 entlib 在哪里构造这个字符串,以及它的某些部分,如“C:\sitepath”是如何用引号出现的,而不是作为字符串文字附加的?

我想知道某处是否有声明,例如

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

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

于 2010-07-20T08:21:59.427 回答
0

我不知道这个错误,但 NEWID() 的顺序让我有点困扰。使用 newid() SQLServer 为数据集中的每一行调用 newid() 函数。

于 2010-07-20T08:22:13.327 回答