[英]importing csv file occur data type mismatch in criteria expression to access
我正在從C#Windows導入csv文件以訪問數據庫。 導入CSV時,條件表達式中的數據類型不匹配。 謝謝回答。
這是我的CSV文件:
2,Each Product less 2 dollars,minus,0,2,2014/7/3,2014/7/31,0
這是我的桌子:
DiscountID(Int),Dis_Description(Text),Dis_Type(Text),Dis_Quantity(Int)
Dis_Value(Int),Start_Date(DateTime),EndTime(DateTime),Dis_Price(Int)
這是代碼:
cmd.CommandText = "UPDATE " + database + " SET [Dis_Description] = '" + dtCSV.Rows[i].ItemArray.GetValue(1).ToString().Trim() + "'," + "[Dis_Type] = '" + dtCSV.Rows[i].ItemArray.GetValue(2).ToString().Trim() + "'," + "[Dis_Quantity] = '" + dtCSV.Rows[i].ItemArray.GetValue(3).ToString().Trim() + "'," + "[Dis_Value] = '" + dtCSV.Rows[i].ItemArray.GetValue(4).ToString().Trim() + "'," + "[Start_Date] = '" + dtCSV.Rows[i].ItemArray.GetValue(5).ToString().Trim() + "'," + "[Expiry_Date] = '" + dtCSV.Rows[i].ItemArray.GetValue(6).ToString().Trim() + "'," + "[Dis_Price] = '" + dtCSV.Rows[i].ItemArray.GetValue(7).ToString().Trim()+ "' WHERE DiscountID = " + dtCSV.Rows[i].ItemArray.GetValue(0).ToString().Trim() + "'";
cmd.ExecuteNonQuery();
更新代碼:在要訪問的條件表達式中也會發生數據類型不匹配的情況。
OleDbCommand cmd = new OleDbCommand("UPDATE Discounts SET [Dis_Description]=?,[Dis_Type]=?,[Dis_Quantity]=?,[Dis_Value]=?,[Start_Date]=?,[Expiry_Date]=?,[Dis_Value]=? WHERE [DiscountID] = ?;
cmd.Parameters.AddWithValue("?", dtCSV.Rows[i].ItemArray.GetValue(1).ToString().Trim());
cmd.Parameters.AddWithValue("?", dtCSV.Rows[i].ItemArray.GetValue(2).ToString().Trim());
cmd.Parameters.AddWithValue("?", dtCSV.Rows[i].ItemArray.GetValue(3).ToString().Trim());
cmd.Parameters.AddWithValue("?", dtCSV.Rows[i].ItemArray.GetValue(4).ToString().Trim());
cmd.Parameters.AddWithValue("?", dtCSV.Rows[i].ItemArray.GetValue(5).ToString().Trim());
cmd.Parameters.AddWithValue("?", dtCSV.Rows[i].ItemArray.GetValue(6).ToString().Trim());
cmd.Parameters.AddWithValue("?", dtCSV.Rows[i].ItemArray.GetValue(7).ToString().Trim());
cmd.Parameters.AddWithValue("?", dtCSV.Rows[i].ItemArray.GetValue(0).ToString().Trim());
cmd.ExecuteNonQuery();
我認為這是您的問題:
WHERE DiscountID = " + dtCSV.Rows[i].ItemArray.GetValue(0).ToString().Trim() + "'";
它可能應該顯示為:
WHERE DiscountID = '" + dtCSV.Rows[i].ItemArray.GetValue(0).ToString().Trim() + "'";
似乎單引號被遺漏了。
另外,為什么字段名稱之間的所有聯接? 即
+ "'," + "[Dis_Quantity] = '" +
可
+ "', [Dis_Quantity] = '" +
等等...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.