Hãy thử sử dụng truy vấn được tham số hóa tại đây là liên kết http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/
Ngoài ra, không sử dụng OpenQuery ... sử dụng cái này để chạy lựa chọn
SELECT * FROM db...table WHERE ref = @ref AND bookno = @bookno
Các bài viết khác mô tả một số tùy chọn của bạn:
http://support.microsoft.com/kb/314520
Cú pháp T-SQL để kết nối với SQL Server khác là gì?
Đã chỉnh sửa
Lưu ý:Câu hỏi ban đầu của bạn là hỏi về các truy vấn phân tán và máy chủ được Liên kết. Câu lệnh mới này không tham chiếu đến một truy vấn phân tán. Tôi chỉ có thể cho rằng bây giờ bạn đang kết nối trực tiếp với cơ sở dữ liệu. Đây là một ví dụ sẽ hoạt động. Đây là một trang web tham khảo khác để sử dụng SqlCommand.Parameters
SqlCommand cmd = new SqlCommand("Select * from Table where [email protected]", con);
cmd.Parameters.Add("@ref", SqlDbType.Int);
cmd.Parameters["@ref"] = 34;
Đã chỉnh sửa:
Ok Jamie taylor, tôi sẽ cố gắng trả lời lại câu hỏi của bạn.
Bạn đang sử dụng OpenQuery vì có thể bạn đang sử dụng DB được liên kết
Về cơ bản, vấn đề là Phương thức OpenQuery lấy một chuỗi mà bạn không thể chuyển một biến như một phần của chuỗi bạn đã gửi đến OpenQuery.
Thay vào đó, bạn có thể định dạng truy vấn của mình như thế này. Ký hiệu theo sau servername.databasename.schemaname.tablename. Nếu bạn đang sử dụng một máy chủ được liên kết qua odbc, hãy bỏ qua tên cơ sở dữ liệu và tên lược đồ, như được minh họa bên dưới
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