C# 如何向Microsoft Access添加日期?

C# 如何向Microsoft Access添加日期?,c#,winforms,ms-access,C#,Winforms,Ms Access,我在向Microsoft Access添加日期/时间时遇到问题,这是我的代码: private void submit_Click(object sender, EventArgs e) { try { connection.Open(); OleDbCommand command = new OleDbCommand(); comman

我在向Microsoft Access添加日期/时间时遇到问题,这是我的代码:

private void submit_Click(object sender, EventArgs e)
        {
            try
            {
                connection.Open();
                OleDbCommand command = new OleDbCommand();
                command.Connection = connection;
                command.CommandText = "insert into DailyLog (EmployeeID,BusNumber,RouteID,DestinationID,ActivityID,Date,MilesDriven,GasInGallons,Comments) values('"+ employee.SelectedValue + "','" + bus.SelectedValue + "','" + route.SelectedValue + "','" + dest.SelectedValue + "','" + activity.SelectedValue + "','" + theDate.Value.ToString("MM/dd/yyyy") + "','" + miles.Value + "','" + gas.Value + "','" + comments.Text + "')";

                command.ExecuteNonQuery();
                MessageBox.Show("Your log has been submitted.");
                connection.Close();
            }
            catch(Exception ex)
            {
                MessageBox.Show("Err: " + ex);
                connection.Close();
            }
        }
它只给了我一个“日期”的语法错误。我该怎么办?我试着把房子修好,把它定为一个短的日期,一般的日期,等等。似乎没有什么对我有用

确切错误:
尝试参数化您的命令。这将解决任何潜在的SQL注入问题,并正确格式化DBMS的值

string commandText = "insert into DailyLog (EmployeeID,BusNumber,RouteID,DestinationID,ActivityID,Date,MilesDriven,GasInGallons,Comments) values(@employee, @bus, @route, @dest, @activity, @theDate, @miles, @gas, @comments)";

using (OleDbCommand command = new OleDbCommand(commandText, connection)) {

    // add parameters
    command.Parameters.Add(new OleDbParameter("@employee", OleDbType.Integer));
    command.Parameters.Add(new OleDbParameter("@theDate", OleDbType.DBDate));

    // set parameter valuess
    command.Parameters["@employee"] = employee.SelectedValue;
    command.Parameters["@theDate"] = theDate.Value;

    // execute command
    command.ExecuteNonQuery();
}

已更新以删除AddWithValue。

数据库ms access上日期的数据类型是什么?请使用参数防止SQLi。将
Date
包装在
[]
中,该字段将成为
[Date]
,因为它是insert into语句中的保留关键字。另外,如果您使用了参数,这种问题就不存在了。同样值得一提的是,
它给了我一个语法错误
,这不是描述性的。目前我把它作为短日期。虽然是在短日期,但我在visual studio日期上尝试了各种不同的属性,例如short和custom(MM/dd/yyyy),同时尝试字符串(“MM/dd/yyyy”)甚至ToSortDateString()…如果是在短日期,则不应使用
(单引号)而是使用散列
#
,我将确保在参数中包装日期。至于传递短日期,您能给我看一个用hashtags代替单引号的例子吗?@Nicholas Hunter您可以执行
command.Parameters.Add(new-OleDbParameter(“@employee”,OleDbType.Integer)).Value=employee.SelectedValue以及;不要再次寻找参数来设置其值。
新的OLEDB参数(“@theDate”,OleDbType.DBDate){value=theDate.value}
@OlivierJacot Descombes哦,有很多方法可以剥鱼皮:)
想象一下,如果人们在回答OP的问题上付出同样的努力,
,想象一下,如果一些人接受有用的反馈来改进,而不是批评建设性的反馈。这一切都很好,这是一个建议或另一个选择;这并不是说你错了。我们的评论旨在帮助你改进答案。我们只需要发布一个改进的答案就可以赢得所有的选票。