2016-03-30 6 views
0

OLEDBを使用してFOX PROテーブルを変換しました。テーブルにデータを挿入しているときにテーブルを使用していますが、日付フィールド(現在の日付)それはエラーのデータ型の不一致を示しています。C#DatetimeをFoxproに変換する方法

dateformat dd/MM/yyyy日付のみの時刻はありません。

string tdate = datetime.now.tostring("dd/MM/yyyy"); 

私は( ' "+ tdate +"')の値CTODを渡していたテーブルに挿入しています。

string query = "select * from table1 where ordcust='" + account + "'"; 
OpenConnection(); 
OleDbCommand cmd = new OleDbCommand(query, con); 
if (ds.Tables[0].Rows.Count > 0) 
{ 
    string ordcust = dr[0].ToString(); 
    string ordnum = dr[1].ToString(); 
    DateTime orddate = DateTime.Now; 
    string vara=orddate.ToString("dd/MM/yyyy"); 
    string cs = "insert into resulttable(ordercustomer,ordnumber,orddate) values ('" + ordcust + "','" + ordnum + "', ctod('" + vara + "'))"; 
} 
+2

作業に[mcve]を表示してください。私は_strongly_あなたが悪い考えである文字列としてDateTimeの値を保存すると思われる。また、C#は大文字と小文字を区別するため、 'DateTime.Now.ToString'にする必要があります。 –

+0

.ToString( "dd/MM/yyyy H:mm:ss");を使用できます。 Soner氏が – Vladimir

+1

と言ったのは悪い考えですが、mySqlタグはどのようにこの質問に関連していますか? –

答えて

2

私はあなたがchoosing the wrong data typeの被害者です強く疑いDateTimeの値は、stringの表現で保存しないでください。値を直接parameterized queryで渡すだけです。

私の提案;

  • は、パラメータの型にOleDbType.Dateをマッピングされている.NET側でSystem.DateTimeにマッピングされているOLEDBタイプのためにあなたのDBTYPE_DATE上を定義します。
  • DateTime.Nowをパラメータ化クエリに直接渡します。

もの点に注意してください。The case against DateTime.Now

+0

文字列query = "select * from table1 ordcust = '" + account + "'"; OpenConnection(); OleDbCommand cmd =新しいOleDbCommand(クエリ、con); if(ds.Tables [0] .Rows.Count> 0) {string ordcust = dr [0] .ToString(); 文字列ordnum = dr [1] .ToString(); DateTime orddate = DateTime.Now; 文字列vara = orddate.ToString( "dd/MM/yyyy"); string cs = "resulttable(ordercustomer、ordnumber、orddate)の値に挿入する( '" + ordcust + "'、+ ordnum +" '、ctod(' "+ vara +" ')); – chechu

+0

@chechuこれを 'edit'ボタンであなたの質問に更新してください。 –

0

それはあなたがOLEDBを使用してFoxProテーブルを「変換」という何を意味するのでしょうか?あなたのコードは、FoxProだけでなく、任意のSQLデータベースのために、正しく見えません。とにかくパラメータを使うべきです。それは次のようになります:

using (var con = new OleDbConnection(@"Provider=VFPOLEDB;Data Source=c:\Path To Your Data\")) 
{ 
    string query = "select * from table1 where ordcust=?"; 
    con.Open(); 
    OleDbCommand cmd = new OleDbCommand(query, con); 
    cmd.Parameters.AddWithValue("p1", account); 
    var reader = cmd.ExecuteReader(); 
    if (reader.Read()) 
    { 
     string ordcust = (string)dr[0]; 
     string ordnum = (string)dr[1]; 
     DateTime orddate = DateTime.Now; 
     string vara = orddate.ToString("dd/MM/yyyy"); 
     string cs = "insert into resulttable (ordercustomer,ordnumber,orddate) values (?, ?, ?)"; 

     var insertCommand = new OleDbCommand(cs, con); 
     insertCommand.Parameters.AddWithValue("p1", ordcust); 
     insertCommand.Parameters.AddWithValue("p2", ordnum); 
     insertCommand.Parameters.AddWithValue("p3", orddate); 

     insertCommand.ExecuteNonQuery(); 
    } 
    con.Close(); 
} 
関連する問題