簡體   English   中英

System.Data.SqlClient.SqlException:“從字符串轉換日期和/或時間時轉換失敗。”

[英]System.Data.SqlClient.SqlException: 'Conversion failed when converting date and/or time from character string.'

如何修復以下異常:

System.Data.SqlClient.SqlException:“從字符串轉換日期和/或時間時轉換失敗。”

我想通過使用按日期過濾來制作可以顯示期間詳細信息的表格。

public void LoadSold()
{
        int i = 0;
        double total = 0;
        dgvSold.Rows.Clear();
        con.Open();

        if (cboSales.Text == "All Sales")
        {
            command = new SqlCommand("SELECT c.CartID, c.transno, c.ProductID, p.ProdDescription, c.price, c.qty, c.disc, c.total FROM tbCart AS c INNER JOIN Product AS p ON c.ProductID = p.ProductID WHERE status LIKE 'Sold' AND sdate BETWEEN '" + dtFrom.Value + "' AND '" + dtTo.Value + "'", con);
        }
        else
        {
            command = new SqlCommand("SELECT c.CartID, c.transno, c.ProductID, p.ProdDescription, c.price, c.qty, c.disc, c.total FROM tbCart AS c INNER JOIN Product AS p ON c.ProductID = p.ProductID WHERE status LIKE 'Sold' AND sdate BETWEEN '" + dtFrom.Value + "' AND '" + dtTo.Value + "' AND cashier LIKE '" + cboSales.Text + "'", con);
        }

        dr = command.ExecuteReader();

        while (dr.Read())
        {
            i++;
            total += double.Parse(dr["total"].ToString());
            dgvSold.Rows.Add(i, dr[0].ToString(), dr[1].ToString(), dr[2].ToString(), dr[3].ToString(), dr[4].ToString(), dr[5].ToString(), dr[6].ToString(),dr[7].ToString());
        }

        dr.Close();
        con.Close();

        lblTotal.Text = total.ToString("#,##0.00");
}

使用SQLParameter

var sql = ".... and sdate between @From ..."

var fromParam = new SqlParameter("@From", SqlDbType.DateTime);
fromParam.Value = dtFrom;

command.Parameters.Add(fromParam);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM