0

Sqlite データベースから日時値を読み取り、datepicker コントロールに割り当てたいと考えています。これが私が試している私のコードです:

try
            {
                sqlitecon.Open();

                string Query = "Select * from Customer_New where Cust_Id='" + val + "'  ";

                SQLiteCommand createCommand = new SQLiteCommand(Query, sqlitecon);
              //  createCommand.ExecuteNonQuery();
                SQLiteDataReader dr = createCommand.ExecuteReader();
                while(dr.Read()){
                if(!dr.IsDBNull(1))
                    date_open.DisplayDate = dr.GetDateTime(1);
                if(!dr.IsDBNull(2))    
                    Date_Joining.DisplayDate = dr.GetDateTime(2);
                if(!dr.IsDBNull(3))
                    txt_Title.Text = dr.GetString(3);
                if(!dr.IsDBNull(4))
                    txt_cardnum.Text =dr.GetString(4);

                }


                sqlitecon.Close();


            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

上記のコードはフォーム ロード イベントで実行されます。そのため、フォームがロードされると、日付値が db テーブルから日付ピッカーにロードされます。ただし、「指定されたキャストが無効です」という例外を示すメッセージ ボックスが表示されてフォームが開かれます。次に、dbから値をロードできず、whileループでの日付フィールドの割り当てを削除すると、残りのテキストフィールドがフォームに正しく割り当てられます。日付の私のデータベース形式は :MM/DD/YYYY であり、タイプは datetime です。「date_open.DisplayDate = dr.GetDateTime(1);」にブレークポイントを置いてデバッグする場合 システムの日付と時刻が表示されます。My db テーブルは次のシーケンスです。date_open | Date_Joining |..... .助けてください

4

1 に答える 1

0

次のようなエラーを診断します: SELECT ステートメントで列名を指定し、 reader.GetOrdinal("DateColName") コード例を使用して選択します。

if(!dr.IsDBNull(1))
  var d1 = dr.GetDateTime("DateColName1");
if(!dr.IsDBNull(2))
  var d2 = dr.GetDateTime("DateColName2");
date_open.DisplayDate = d1;
Date_Joining.DisplayDate = d2;

更新: 診断中...

string Query = "Select date_open from Customer_New where Cust_Id='" + val + "'  ";
/* your code */
while(dr.Read()){
    var dt_obj = dr[0];
    var bt = Convert.ToDateTime(dt_obj);
}
于 2013-10-10T05:13:02.560 に答える