我已尝试使用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();
我尝试过格式化。我添加了#但似乎没有任何效果。这真是令人沮丧,因为我花了一天多的时间才开始工作。我究竟做错了什么?
答案 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)
您可能需要检查数据库中的列设置是否已将时间戳列格式设置为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());
这对我来说非常好