Asp.net 参数化查询-执行查询时出错

Asp.net 参数化查询-执行查询时出错,asp.net,sql,vb.net,Asp.net,Sql,Vb.net,我最近一直在试图找到一种方法来让参数化查询工作,我想我差不多做到了,但在执行查询时似乎遇到了一个错误 这是密码 Dim LogData2 As sterm.MarkData = New sterm.MarkData() Dim query As String = ("Select * from openquery (db, 'SELECT * FROM table WHERE investor=@investor')") Dim cmd As New SqlCommand(query) cm

我最近一直在试图找到一种方法来让参数化查询工作,我想我差不多做到了,但在执行查询时似乎遇到了一个错误

这是密码

Dim LogData2 As sterm.MarkData = New sterm.MarkData()

Dim query As String = ("Select * from openquery (db, 'SELECT * FROM table WHERE investor=@investor')")

Dim cmd As New SqlCommand(query)
cmd.Parameters.AddWithValue("@investor", 34)

Dim drCode2a As DataSet = LogData2.StermQ3(query)
我对它进行了调试,但它似乎没有将参数放入查询中

"Select * from openquery (db, 'SELECT * FROM table WHERE investor=@investor')"
这就是我调试行
Dim drCode2a作为DataSet=LogData2.StermQ3(查询)时得到的结果

知道我做错了什么吗

解决方案

下面是我解决问题的方法

Dim conn As SqlConnection = New SqlConnection("server='h'; user id='w'; password='w'; database='w'; pooling='false'")

conn.Open()

Dim query As New SqlCommand("DECLARE @investor varchar(10), @sql varchar(1000) Select @investor = 69836 select @sql = 'SELECT * FROM OPENQUERY(db,''SELECT * FROM table WHERE investor = ''''' + @investor + ''''''')' EXEC(@sql)", conn)

dgBookings.DataSource = query.ExecuteReader
dgBookings.DataBind()

谢谢你的帮助

好的,杰米·泰勒,我会再次尝试回答你的问题

您使用的是OpenQuery,因为您可能使用的是链接数据库

基本上,问题在于OpenQuery方法将无法传递变量的字符串作为发送到OpenQuery的字符串的一部分

您可以这样格式化查询。符号后面是servername.databasename.schemaname.tablename。如果您通过odbc使用链接服务器,则省略databasename和schemaname,如下所示

    Dim conn As SqlConnection = New SqlConnection("your SQL Connection String")
    Dim cmd As SqlCommand = conn.CreateCommand()
    cmd.CommandText = "Select * db...table where investor = @investor"
    Dim parameter As SqlParameter = cmd.CreateParameter()
    parameter.DbType = SqlDbType.Int
    parameter.ParameterName = "@investor"
    parameter.Direction = ParameterDirection.Input
    parameter.Value = 34

我已经这样做了,但是没有
,我得到
必须声明@investor
,如果我用
那么我得到
invlay列前缀
我现在得到
属性访问必须分配给属性或使用其值。
@Jamie Taylor。。。设置参数方向我现在获取的
“SqlDataParameter”未定义。
@Jamie Taylor。。。我在我写的代码中发现了一些拼写错误,但现在的代码可以运行了,因为我刚刚测试了它。