2016-05-02 54 views
0

我已經嘗試了幾乎所有將當前日期和時間插入到使用c#的MS Access數據庫中,但似乎沒有任何工作。 表結構看起來像如何在Ms Access中使用c#插入當前日期/時間

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

這豈不是給你有什麼錯誤?通常失敗的插入/更新導致錯誤解釋什麼是錯誤的。目前你所擁有的代碼會抱怨沒有提供時間戳。 – BugFinder

+0

沒有工作。它給出了一個錯誤,說select into statement invalid – user3342812

+0

@ user3342812你可能想重新考慮使用「AddWithValue」。看到這個:http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/ – Tibrogargan

回答

0

OleDB/Access要求您明確設置日期/時間值的數據類型。

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

如果您正在使用托爾圖加鏈:

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(); 
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(); 
-1

我知道這個帖子是有點老,但它可以幫助別人。 今天早上我面臨這個問題。我終於找到了解決方案。

DateTime.Now發送到數據庫的值的格式爲{dd/mm/yyyy hh: mm: ss},我認爲發生的情況是訪問不識別{ }

所以要解決這個問題只是轉換的日期字符串,將其分配給參數前:

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

或者

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

的工作對我非常好

相關問題