如何使用c#在Ms Access中插入当前日期/时间

时间:2016-05-02 23:09:29

标签: c# .net datetime ms-access

我已尝试使用c#将当前日期和时间插入MS Access数据库,但似乎没有任何工作。 表结构类似于

ID(Primary Key) Est_ID(Number)  saveName(Text) userName(Text) timestamp(Date/Time)

代码看起来像

OleDbConnection conn = new OleDbConnection(connectionString);
conn.Open();

DateTime today = DateTime.Today;
DateTime time= DateTime.Now;
string name = Request.Form["saveName"];

string my_querry = "INSERT INTO TABLENAME (userName, Est_id,saveName,timestamp) VALUES(@userName,@Est_id,@saveName,@timestamp)";

OleDbCommand cmd = new OleDbCommand(my_querry, conn);

cmd.Parameters.AddWithValue("@userName", userName);
cmd.Parameters.AddWithValue("@Est_id", est_index);
cmd.Parameters.AddWithValue("@saveName", name);
cmd.Parameters.AddWithValue("@timestamp",time);

cmd.ExecuteNonQuery();

我尝试过格式化。我添加了#但似乎没有任何效果。这真是令人沮丧,因为我花了一天多的时间才开始工作。我究竟做错了什么?

5 个答案:

答案 0 :(得分:1)

OleDB / Access要求您明确设置日期/时间值的数据类型。

var param = cmd.Parameters.AddWithValue("@timestamp",time);
param.OleDbType = OleDbType.Date;

答案 1 :(得分:1)

OleDbConnection conn = new OleDbConnection(connectionString);
conn.Open();

string name = Request.Form["saveName"];

string my_querry = "INSERT INTO TABLENAME (userName, Est_id,saveName,timestamp) VALUES(@userName,@Est_id,@saveName,Now())";

OleDbCommand cmd = new OleDbCommand(my_querry, conn);

cmd.Parameters.AddWithValue("@userName", userName);
cmd.Parameters.AddWithValue("@Est_id", est_index);
cmd.Parameters.AddWithValue("@saveName", name);


cmd.ExecuteNonQuery();

答案 2 :(得分:0)

根据此链接https://support.office.com/en-us/article/Format-the-date-and-time-field-in-Access-47fbbdc1-52fa-416a-b8d5-ba24d881b698

您可能需要检查数据库中的列设置是否已将时间戳列格式设置为Genaral Date以与C#中的DateTime.Now匹配。

此外,您需要检查System.DateTime的输出和数据库时间格式是12小时系统还是24小时系统。

希望这些信息能为您提供帮助。

答案 3 :(得分:0)

如果您正在使用Tortuga Chain:

static AccessDataSource s_DataSource = new AccessDataSource(connectionString); //one per application
DateTime today = DateTime.Today;
DateTime time= DateTime.Now;
string name = Request.Form["saveName"];

s_DataSource.Insert("TABLENAME", new {@username = userName, @Est_id = est_index,@saveName = name,@timestamp = time}).Execute();

答案 4 :(得分:-1)

我知道这篇文章有点旧,但它可以帮助某人。 从今天早上起,我遇到了这个问题。我终于找到了解决方案。

DateTime.Now向数据库发送的值采用{dd / mm / yyyy hh: mm: ss}格式,我认为,访问无法识别{ }

因此,要解决此问题,只需将日期转换为字符串,然后再将其分配给参数:

cmd.Parameters.AddWithvalue("@timestamp", time.ToString());

cmd.Parameters.AddWithvalue("@timestamp", oleDbType.Date).Value=time.ToString());

这对我来说非常好