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 循环中从分配中删除日期字段,则其余文本字段将正确分配给 form 。我的日期数据库格式是 :MM/DD/YYYY 并且是 datetime 类型。通过在“date_open.DisplayDate = dr.GetDateTime(1);”处放置断点进行调试 它显示系统日期和时间。我的数据库表如下顺序:Cust_id | 日期打开 | 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 回答