C# 如何向Microsoft Access添加日期?
我在向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
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的问题上付出同样的努力,,想象一下,如果一些人接受有用的反馈来改进,而不是批评建设性的反馈。这一切都很好,这是一个建议或另一个选择;这并不是说你错了。我们的评论旨在帮助你改进答案。我们只需要发布一个改进的答案就可以赢得所有的选票。