繁体   English   中英

如何将c#日期时间转换为Foxpro日期

[英]How to convert c# Datetime into Foxpro Date

我已经使用OLEDB转换了FOX PRO表,并且正在c#中使用表,当我向表中插入数据时,它工作正常,但是当我插入日期字段(现在)date时,它显示错误数据类型不匹配。

dateformat仅dd / MM / yyyy没有日期。

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

当我插入表时,我传递值ctod('“ + tdate +”');

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 + "') )";
}

强烈怀疑您是选择错误数据类型的受害者。 您永远不要将DateTime值及其string表示形式存储在一起。 只需直接参数化查询中传递它们的值即可

我的建议;

  • 在.NET端映射为System.DateTime OleDb Type定义DBTYPE_DATE ,在参数类型映射为OleDbType.Date .NET端。
  • 将您的DateTime.Now直接传递给参数化查询。

另请注意: 针对DateTime.Now的案例

您使用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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM