C# Access OleDB 分别添加时间和日期

Posted

技术标签:

【中文标题】C# Access OleDB 分别添加时间和日期【英文标题】:C# Access OleDB add Time and date separately 【发布时间】:2020-10-15 05:53:03 【问题描述】:

我用 C# 构建了一个程序来替换 VB6 中的旧程序,我必须使用这个旧数据库并且无法更改它 红色代表日期,蓝色代表时间 但我不知道如何在 C# 中做到这一点,我只有一个 DateTime

如何添加?

我的代码:

public void GetExternalTestObjectList(DateTime DateTest,DateTime TimeTest,
            string NuTest,string Typebat,string TxtNuSidra,int NuTestBat,string NuCod,
            int numtest,double OCV,string FaultOCV,double CCV,string FaultCCV,double dccvocv,
            string Name,int focvn, int fccvn, int nchek, int fotd, double eqfolt,
            string tc, string cc, string oclc, string ochc, string cclc, string cchc,
            double dccvocvsc, string dccvocvn, double dccvocvnN, double dccvocvscl)
        
            try
            
                using (OleDbConnection openCon = new OleDbConnection(localConnectionString))
                

                    string query = "INSERT into [data] ([Date Test], [Time Test]," +
                        "[Nu' Test],[Type bat],[TxtNuSidra],[Nu' Test bat],[Nu' Cod]," +
                        "[numtest],[OCV],[Fault OCV],[CCV],[Fault CCV],[dccvocv],[Name]," +
                        "[focvn],[fccvn],[nchek],[fotd],[eqfolt],[tc],[cc],[oclc],[ochc]," +
                        "[cclc],[cchc],[dccvocvsc],[dccvocvn],[dccvocvnN],[dccvocvscl]) " +
                        "VALUES (@DateTest, @TimeTest, @NuTest, @Typebat, @TxtNuSidra," +
                        "@NuTestBat, @NuCod,@numtest, @OCV, @FaultOCV, @CCV, @FaultCCV, @dccvocv, " +
                        "@Name,@focvn, @fccvn, @nchek, @fotd, @eqfolt, @tc, @cc, @oclc, @ochc, @cclc," +
                        "@cchc, @dccvocvsc, @dccvocvn, @dccvocvnN, @dccvocvscl)";
                    using (OleDbCommand command = new OleDbCommand(query))
                    
                        command.Parameters.AddWithValue("@DateTest", DateTest);
                        command.Parameters.AddWithValue("@TimeTest", TimeTest);
                        command.Parameters.AddWithValue("@NuTest", NuTest);
                        command.Parameters.AddWithValue("@Typebat", Typebat);
                        command.Parameters.AddWithValue("@TxtNuSidra", TxtNuSidra);
                        command.Parameters.AddWithValue("@NuTestBat", NuTestBat);
                        command.Parameters.AddWithValue("@NuCod", NuCod);
                        command.Parameters.AddWithValue("@numtest", numtest);
                        command.Parameters.AddWithValue("@OCV", OCV);
                        command.Parameters.AddWithValue("@FaultOCV", FaultOCV);
                        command.Parameters.AddWithValue("@CCV", CCV);
                        command.Parameters.AddWithValue("@FaultCCV", FaultCCV);
                        command.Parameters.AddWithValue("@dccvocv", dccvocv);
                        command.Parameters.AddWithValue("@Name", Name);
                        command.Parameters.AddWithValue("@focvn", focvn);
                        command.Parameters.AddWithValue("@fccvn", fccvn);
                        command.Parameters.AddWithValue("@nchek", nchek);
                        command.Parameters.AddWithValue("@fotd", fotd);
                        command.Parameters.AddWithValue("@eqfolt", eqfolt);
                        command.Parameters.AddWithValue("@tc", tc);
                        command.Parameters.AddWithValue("@cc", cc);
                        command.Parameters.AddWithValue("@oclc", oclc);
                        command.Parameters.AddWithValue("@ochc", ochc);
                        command.Parameters.AddWithValue("@cclc", cclc);
                        command.Parameters.AddWithValue("@cchc", cchc);
                        command.Parameters.AddWithValue("@dccvocvsc", dccvocvsc);
                        command.Parameters.AddWithValue("@dccvocvn", dccvocvn);
                        command.Parameters.AddWithValue("@dccvocvnN", dccvocvnN);
                        command.Parameters.AddWithValue("@dccvocvscl", dccvocvscl);


                        command.Connection = openCon;
                        openCon.Open();
                        int recordsAffected = command.ExecuteNonQuery();
                        openCon.Close();
                    
                
            
            catch (Exception ex)
            
                throw ex;
            
        

我得到了下一个错误:

System.Data.OleDb.OleDbException: 'Data type mismatch in criteria expression.'

这就是我的桌子的样子:

【问题讨论】:

【参考方案1】:

您可以简单地使用 DateTime 对象中的 Date 属性来获取 DateTime 部分,并将零设置为时间,使用 TimeOfDay 属性将 DateTime 对象的时间部分获取为 TimeSpan。

这应该可以工作...

【讨论】:

以上是关于C# Access OleDB 分别添加时间和日期的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 和 OleDB 向 Access 数据库表中添加富文本列?

使用 OleDb 和 Access 数据库引擎的 C# Excel 插入错误

使用 c# 和 oledb 查询更新 Ms-Access 2010 中的列值

C# MD5 和/或其他加密 oledb (access 2007)

使用 Microsoft.Jet.OLEDB.4.0 从 C# 将行插入 Access db,自动编号列设置为零

无法通过 C# oledb 将记录插入 MS Access