0
 Dim con1 As OleDb.OleDbConnection
            Dim cmd As OleDb.OleDbCommand
            Dim query As String


            Dim rs As OleDb.OleDbDataReader
            con1 = New OleDb.OleDbConnection("Provider=MSDAORA.1;Data Source=localhost;Persist Security Info=True;Password=sys;User ID=nitishok")
            con1.Open()


            query = "select * from HOLDERSDB where DOB like '" + DateTimePicker1.Value + "' "
            cmd = New OleDb.OleDbCommand(query, con1)
            cmd.CommandType = CommandType.Text
            rs = cmd.ExecuteReader

            Dim da As New OleDb.OleDbDataAdapter(query, con1)

            Dim ds As New DataSet()
            da.Fill(ds, "HOLDERSDB")
            DataGridView1.DataSource = ds.Tables(0)

            con1.Close()
    enter code here

datetimepicker1としてDOBを持つHOLDERSテーブルの行が必要です。投稿したコードは結果を返しません。

Plzヘルプ。

4

4 に答える 4

1

DOBがDATEフィールドであると仮定すると(うまくいけばそうです!)、TO_DATEを使用し、date = stringを比較しようとしないでください。そうしないと、今日ではなく、いつかコードが失敗します。

"select * from HOLDERSDB where dob = to_date(" + DateTimePicker1.Value + ", 'dd-mon-yyyy')

DateTimePickerの戻り値をフォーマットするには、ここを参照してください

http://msdn.microsoft.com/en-us/library/system.windows.forms.datetimepicker.customformat.aspx

TO_DATE関数の2番目のパラメーター(私が言ったようにdd-mon-yyyyである必要はありません。Oracleは複数のフォーマットをサポートしています)と同じ方法でフォーマットするようにしてください。

また、パフォーマンス/セキュリティ上の理由から、バインド変数を使用し、SQLに文字列を貼り付けないようにする必要があります。

于 2012-11-01T13:08:34.137 に答える
0

問題を特定するために必要な手順:

  • の値を確認してください、query正しいですか?
  • データベースに対してクエリを手動で実行します。結果は返されますか?
  • チェックdsオブジェクトにはds.Tables[0].Rows.Count、0より大きいを使用したデータがありますか?
于 2012-11-01T12:53:09.113 に答える
0

私が使用した後:

Public Function SQLDate(p1 As Date) As String
    Return String.Format("{0}{1}{2}", p1.Year, p1.Month.ToString.PadLeft(2, "0"c), p1.Day.ToString.PadLeft(2, "0"c))
End Function

それで:

Debug.Print(SQLDate(DateTimePicker1.Value)) =====> 20121101

また、SQLクエリでは次のように使用します。

String.Format("... WHERE DOB = '{0}'", SQLDate(DateTimePicker1.Value))
于 2012-11-01T15:45:16.963 に答える
0

クエリで連結する代わりに、OleDbParameterをcmd.Parametersに追加します。これにより、ハッキングの可能性が減り、適切なタイプの値を挿入するのに役立ちます。

また、なぜあなたが同じようなステートメントを必要とするのかわかりません。特にDOBが日付の場合は、通常の=演算子を使用する必要があります。

于 2012-11-01T16:44:46.080 に答える