Försök att använda en parameteriserad fråga här är en länk http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/
Använd inte OpenQuery... använd detta för att köra select
SELECT * FROM db...table WHERE ref = @ref AND bookno = @bookno
Fler artiklar som beskriver några av dina alternativ:
http://support.microsoft.com/kb/314520
Vad är T-SQL-syntaxen för att ansluta till en annan SQL-server?
Redigerad
Obs:Din ursprungliga fråga var om distribuerade frågor och länkade servrar. Den här nya satsen refererar inte till en distribuerad fråga. Jag kan bara anta att du ansluter direkt till databasen nu. Här är ett exempel som borde fungera. Här är en annan referenssida för att använda SqlCommand.Parameters
SqlCommand cmd = new SqlCommand("Select * from Table where [email protected]", con);
cmd.Parameters.Add("@ref", SqlDbType.Int);
cmd.Parameters["@ref"] = 34;
Redigerad:
Ok Jamie taylor, jag ska försöka svara på din fråga igen.
Du använder OpenQuery eftersom du förmodligen använder en länkad DB
I grund och botten är problemet att OpenQuery-metoden tar en sträng som du inte kan skicka en variabel som en del av strängen du skickade till OpenQuery.
Du kan formatera din fråga så här istället. Notationen följer servernamn.databasnamn.schemanamn.tabellnamn. Om du använder en länkad server via odbc, utelämna databasnamn och schemanamn, som illustreras nedan
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