【问题标题】:How to assign and display date value on date picker using sqlitedatareader object in C# using wpf如何使用 wpf 在 C# 中使用 sqlitedatareader 对象在日期选择器上分配和显示日期值
【发布时间】:2013-10-10 04:52:56
【问题描述】:

我想从 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 |..... .请帮忙

【问题讨论】:

  • 如果我测试这个命令:DateTime temp = dr.GetDateTime(1); //它抛出异常:“字符串未被识别为有效的数据时间”..它们是存储在数据库中的值的问题吗?

标签: c# sqlite datetime datepicker wpf-controls


【解决方案1】:

像这样诊断错误: 在 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);
}

【讨论】:

  • 所以,转换问题不在代码类型,而在 db 类型。现在尝试查询“SELECT date('now');”并在代码中阅读。 SQLLite 日期时间格式应为“YYYY-MM-DD HH:MM:SS.SSS”
  • 好吧……那现在怎么办?在代码或 sqlite 中转换日期格式...如何?请帮助
  • 你解析成功了吗“SELECT date('now');” ?我更新了答案。您在哪一行遇到错误?
  • 是的,它在 sqlite db 中成功解析,它以这种格式给出结果“YYYY-MM-DD HH:MM:SS.SSS”
  • SQLiteDataReader reader = db.ExecuteSQL("Select date_open from Customer_New where Cust_Id='" + val + "' "); db怎么定义??
猜你喜欢
  • 1970-01-01
  • 2013-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-09
  • 1970-01-01
相关资源
最近更新 更多