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。。。我在我写的代码中发现了一些拼写错误,但现在的代码可以运行了,因为我刚刚测试了它。