如何使用c#将数据从datetimepicker插入到ms访问

本文关键字:插入 ms 访问 datetimepicker 何使用 数据 | 更新日期: 2023-09-27 18:16:23

我是初学者,我正在使用从datetimepicker插入数据到ms访问。我的代码是:

    private void SaveSale()
    {
        string connString = ConfigurationManager.ConnectionStrings["saledbx"].ConnectionString;
        string cmdString = "INSERT INTO Sale (Date, Sale, Expense) VALUES (@Date, @Sale, @Expense)";
        using(OleDbConnection con = new OleDbConnection(connString))
        {
            using(OleDbCommand cmd = new OleDbCommand(cmdString, con))
            {
                con.Open();
                cmd.Parameters.AddWithValue("@Date", TodayDatePicker.Text);
                cmd.Parameters.AddWithValue("@Sale", SaleTextBox.Text);
                cmd.Parameters.AddWithValue("@Expense", ExpenseTextBox.Text);
                cmd.ExecuteNonQuery();
                MessageBox.Show("Today Sale is added Successfully!", "Sale Saved", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
    }

我面对这个错误:

类型为"System.Data.OleDb"的未处理异常。在System.Data.dll中发生OleDbException

附加信息:INSERT INTO语句语法错误。

如何使用c#将数据从datetimepicker插入到ms访问

日期为保留关键字。如果不能更改该字段的名称,则应将其括在方括号

中。
string cmdString = "INSERT INTO Sale ([Date], Sale, Expense) VALUES (@Date, @Sale, @Expense)";

接下来,我特别建议使用Add而不是AddWithValue,因为您正在处理容易出现许多转换错误的日期。

cmd.Parameters.Add("@Date", OleDbType.Date).Value = TodayDatePicker.Value;

通过这种方式,您可以告诉数据库引擎所传递参数的确切数据类型,并避免从字符串到日期时间值的任何转换