2016-08-17 26 views
0

我試圖總結WHERE如下圖所示指定的轉換無效SQLite的空選擇值

DateTime from = DateTime.Parse(dt_From.Value.ToShortDateString()); 
DateTime to = DateTime.Parse(dt_To.Value.ToShortDateString()); 
SQLiteConnection con = new SQLiteConnection(Properties.Settings.Default.ConnectionString); 
SQLiteCommand cmd = null; 
con.Open(); 

//Total Items Sold 
string query = " SELECT SUM(total) FROM acc_items_income WHERE date BETWEEN @from AND @to AND deleted = 0 "; 
cmd = new SQLiteCommand(query, con); 
cmd.Parameters.Add(new SQLiteParameter("@from", from)); 
cmd.Parameters.Add(new SQLiteParameter("@to", to)); 

日之間@from和@至A柱和我想要讀它,如圖所示

SQLiteDataReader dr = cmd.ExecuteReader(); 
while (dr.Read()) 
{ 
    double soldItems = dr.GetDouble(0); 
    txtTotalSoldItems.Text = soldItems.ToString("c", naira); 
} 

現在我的錯誤是,當我從一個行中選擇日期時間不在數據庫中,或不能SUM列沒有值,那麼我得到這個錯誤。

指定的轉換無效

+0

然後添加另一個語句到where子句'和Where總IS NOT NULL' – MethodMan

回答

0

你需要嘗試讀取列之前檢查的DBNull值。

while (dr.Read()) 
{ 
    if (dr.IsDBNull(0)) { //Check for a null value at the 0 index 
     soldItems = 0; 
    } else { 
     soldItems = dr.GetDouble(0); 
    } 
} 
+0

非常感謝。它工作... –

+0

請務必接受我的答案,因爲什麼解決了你的問題,所以我可以得到點:) – dgarbacz