2012-04-15 3 views
0
statement = "SELECT OrderID, (SELECT VendName FROM Vendors WHERE Vendors.VendorID = Orders.VendorID) " & 
         ",OrderDt, RcvdDt, OrderTotal " & 
         "FROM Orders " & 
         "WHERE VendName=? " & 
         "ORDER BY OrderDt DESC" 

Dim cmd As New OleDbCommand(statement, connection) 
cmd.Parameters.AddWithValue("VendName", txtVendorFilter.Text) 
Dim reader As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.Default) 

단순히 텍스트 상자 값을 SQL에 연결하고 "필수 매개 변수에 지정된 값이 없습니다."라는 메시지가 표시되어 사용하려고합니다. 매개 변수가있는 쿼리가 대신 사용됩니다. 그래서 나는 이것을 시도했고 그것은 나에게 어떤 오류도주지 않았지만 독자는 그 안에 아무 것도 가지지 않았다. 이전에 매개 변수화 된 쿼리를 사용 해본 적이 없기 때문에 이것이 작동하지 않는 이유에 대해 약간 분실했습니다.VB에서 매개 변수화 된 쿼리가 작동하지 않습니다.

편집 : 필자는 OLEDB를 설명하기 위해 위의 코드를 변경했는데, 어떻게 작동해야하는지 간단히 읽었으며, "필수 매개 변수에 주어진 값이 없습니다"라고 다시 말합니다.

답변

3

하나의 문제는 여기에 있습니다 :

"WHERE VendName='@x' " & 

'마르크 드롭 - 매개 변수화 당신이 알아서합니다

"WHERE VendName= @x " & 

를 쿼리에 '를 사용 '@x'로 처리된다는 것을 의미한다 매개 변수 이름이 아닌 문자열 유형.

또한 OleDb을 사용하고 있으므로 names 매개 변수가 지원되지 않습니다. 쿼리에서 매개 변수를 나타내려면 ?을 사용해야합니다.

"WHERE VendName= ? " & 
+0

감사합니다. 나는 이것을했고, 이제는 실행중인 독자에게 하나 이상의 필수 매개 변수에 아무런 가치가 주어지지 않는다는 말을 다시 한 번 오류가 발생합니다 ... – Tomcat

+0

@ user1335008 - OleDb를 사용하고 싶지 않습니다. 답변이 업데이트되었습니다. – Oded