ここでパラメーター化されたクエリを使用してみてくださいhttp://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/
また、OpenQueryを使用しないでください...これを使用してselectを実行します
SELECT * FROM db...table WHERE ref = @ref AND bookno = @bookno
いくつかのオプションを説明するその他の記事:
http://support.microsoft.com/kb/314520
別のSQLServerに接続するためのT-SQL構文は何ですか?
編集済み
注:最初の質問は、分散クエリとリンクサーバーについて尋ねていました。この新しいステートメントは、分散クエリを参照していません。現在、データベースに直接接続していると想定できます。動作するはずの例を次に示します。これは、SqlCommand.Parameters
を使用するための別のリファレンスサイトです。SqlCommand cmd = new SqlCommand("Select * from Table where [email protected]", con);
cmd.Parameters.Add("@ref", SqlDbType.Int);
cmd.Parameters["@ref"] = 34;
編集済み:
ジェイミーテイラー、もう一度あなたの質問に答えようと思います。
リンクされたDBを使用している可能性があるため、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