我想从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循环中分配日期字段,则其余的文本字段被正确分配给表单。我的db日期是:MM / DD / YYYY,类型为datetime。在调试时将断点放在“date_open.DisplayDate = dr.GetDateTime(1);”它显示系统日期和时间。我的db表遵循以下顺序:Cust_id | date_open | Date_Joining | .....。请帮助
答案 0 :(得分: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);
}