0

単純なselectステートメントと日時ピッカーを使用してデータベースから値を取得しようとしています。私がこれをどのように行うことができるかについて私を助けてくれませんか?クエリに特定の日付を入力すると、selectステートメントがSQLで機能しますが、datetimepickerで日付を選択し、その特定の日付のデータを取得できるようにしたいです。

これまでのコードは次のとおりです。

Dim command As String = "select CUSORDER.ORDERID, CUSORDER.ORDERDATE, 
CUSORDER.STAFFID, CUSTOMER.CUSTOMERID,  CUSTOMER.CUSTOMERADD_1 
FROM CUSORDER,CUSTOMER 
WHERE CUSORDER.CUSTOMERID = CUSTOMER.CUSTOMERID AND 
CUSORDER.ORDERDATE = '" & DateTimePicker1.Value.ToString & "'"

これを行うために正しいプロパティとフォーマットを使用していますか?

4

2 に答える 2

1

SQLクエリを取得するために文字列を連結しないでください。これにより、SQL インジェクションの脆弱性、ローカリゼーションの問題、またはその他の問題が発生する可能性があります。クエリは常にパラメータ化する必要があります。

Dim sql As String = "select CUSORDER.ORDERID, CUSORDER.ORDERDATE, CUSORDER.STAFFID, CUSTOMER.CUSTOMERID, CUSTOMER.CUSTOMERADD_1 FROM CUSORDER,CUSTOMER WHERE CUSORDER.CUSTOMERID = CUSTOMER.CUSTOMERID AND CUSORDER.ORDERDATE = @ORDERDATE"
Using con = New SqlConnection(YourConnectionString)
    Using command = New SqlCommand(sql, con)
        command.Parameters.AddWithValue("@ORDERDATE", DateTimePicker1.Value)
        con.Open()
        Using reader = command.ExecuteReader()
            While reader.Read()
                ' ... '
            End While
        End Using
    End Using
End Using 
于 2013-03-19T12:16:49.773 に答える
0

助けになれば、私は次のことを行います。

Dim dteTemp As Date = DateTimePicker.value 'might help any injection code as the convert will fail.

Dim command As String = "select CUSORDER.ORDERID, CUSORDER.ORDERDATE, CUSORDER.STAFFID,
CUSTOMER.CUSTOMERID,  CUSTOMER.CUSTOMERADD_1 FROM CUSORDER,CUSTOMER WHERE
(CUSORDER.CUSTOMERID = CUSTOMER.CUSTOMERID) AND
(CUSORDER.ORDERDATE = '" & dteTemp.ToString("yyyy/MM/dd HH:mm:ss") & "')"

日付のフォーマットにより、PCがSQLデータベースに対してローカルな別の日付にあるという問題を回避できます。

于 2013-03-19T15:05:55.337 に答える