2016-05-02 7 views
0

C#を使用してMS Accessデータベースに現在の日付と時刻を挿入するためにほとんどすべてを試しましたが、何も動作していないようです。コードは、私は、フォーマットしようとしているcsを使用してMs Accessに現在の日付/時刻を挿入する方法#

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

のように見えます

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

よう テーブル構造が見えます。私は#を追加しましたが、何も動作していないようです。これは実際にこれを稼働させる日以上を過ごして以来、本当にイライラしています。私は間違って何をしていますか?

+0

私のために非常にうまく機能し、それが与えるものではありませんあなたはどんな誤りですか?通常挿入/更新に失敗した場合、何が間違っているかを説明するエラーが発生します。現時点では、あなたが持っているコードはタイムスタンプが供給されていないと不平を言うでしょう。 – BugFinder

+0

は機能しませんでした。 select into文が無効であるというエラーが表示されます – user3342812

+0

@ user3342812 "AddWithValue"の使用を再考することをお勧めします。これを参照してください:http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/ – Tibrogargan

答えて

0

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

このリンクからよるとあなたはすでにC#でDateTime.Nowと一致するGenaral日にタイムスタンプ列の書式を設定して保有するデータベース内の自分の列の設定を確認する必要があるかもしれません。

また、System.DateTimeの出力とデータベースの時刻形式が12時間または24時間であることを確認する必要があります。

この情報がお役に立てば幸いです。

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

関連する問題