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“”,引号的使用不正确。
如何修复该错误。
答案 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()函数。