두 개의 열을 검색하려고합니다. su_Appointments
vb를 사용하여 SQL 서버 데이터베이스 의 테이블 에서 App_ID 및 App_Slot을 사용하고 날짜와 시간이라는 두 가지 조건이 있습니다. 쿼리에 대한 App_Date & App_Time, 이제 쿼리를 실행하면 '2014'근처에 잘못된 구문이라는 오류가 발생합니다. 쿼리는 다음과 같습니다. 변수 AP_ID에 App_ID를 저장하겠습니다.
암호
Using Query As New SqlCommand("Select App_ID From su_Appointments Where (App_Date = ' and App_Time = ' )" & DT & TM, sqlcon)
sqlcon.Open()
Dim dr As SqlDataReader = Query.ExecuteReader()
While dr.Read()
AP_ID = dr(0)
End While
End Using
sqlcon.Close()
글쎄, 당신의 구문은 사실상 잘못되었습니다.
SELECT 문에는
SELECT <fieldA>, <FieldB>, ....
FROM <Table>
WHERE <FieldX> = <Condition1> AND <FieldZ> = <Condition2>
그러나이 기본 오류의 일부로 매개 변수화 된 쿼리 접근 방식을 사용하기 시작해야합니다.
Using sqlcon = new SqlConnection(.....connectionstring...)
Dim cmdText = "Select App_ID From su_Appointments Where App_Date =@dt and App_Time = @tm"
Using Query = New SqlCommand(cmdText, sqlcon)
sqlcon.Open()
Query.Parameters.AddWithValue("@dt", DT)
Query.Parameters.AddWithValue("@tm", TM)
Using dr =Query.ExecuteReader()
While dr.Read()
AP_ID = dr(0)
End While
End Using
End Using
End Using
매개 변수화 된 쿼리를 사용하면 많은 이점을 얻을 수 있습니다. Sql Injection Attacks 가능성이 없으며 명령의 텍스트가 더 명확하고 이해하기 쉬우 며 매개 변수가 코드 자체에서 올바른 인용을 위해 처리되므로 문자열 내부의 작은 따옴표를 확인하거나 올바른 날짜 형식을 지정할 필요가 없습니다. 그리고 십진수.
결국 다른 문제가 발생할 수 있습니다. 당신의 열 경우 App_Date
와는 App_Time
타입 날짜의 수 있습니다 당신은 적절한 유형의 매개 변수, 단순히 문자열을 전달해야합니다. 대신 이러한 필드가 유형 nvarchar
(또는 다른 종류의 텍스트 유형)이면 문자열을 전달하지만 이러한 필드에 올바르게 저장하고 쿼리하는 데 문제가 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다