2010-07-20 116 views
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”“,不正确地使用引号。

如何解决该错误。

回答

0

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

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

该错误显然与引用位置方面形成严重的字符串有关。你知道entlib在构造这个字符串的地方,以及它的某些部分如“C:\ sitepath”是否与引号一起出现,而不是作为字符串文字被附加?

不知冥冥之中有诸如

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

..这是导致行情被插入到构建串的声明。

+0

企业库数据访问应用程序块正在提供数据库,正在使用的连接字符串是默认的,并且可用于整个站点的许多其他查询。如果我用整数值替换参数并在SQLSMS中运行查询,它将返回预期的结果。谢谢 – Phil 2010-07-20 08:27:09

0

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

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

+0

谢谢,我正在使用v 5并使用commandname = db.getsqlstringcommand然后在db.executereader(commandname)中使用它可以在所有其他代码中正常工作。来自codeplex的线程没有解析,所以没有太大的帮助。 – Phil 2010-07-20 08:25:45

0

我不知道错误,但由NEWID()命令困扰我一点。 newid()SQLServer为数据集中的每一行调用newid()函数。

+0

关于通过newid()删除命令的错误仍然是一样的。谢谢 – Phil 2010-07-20 08:24:18