首页 > 解决方案 > C# Access OleDB 分别添加时间和日期

问题描述

我在 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.'

这就是我的桌子的样子:

在此处输入图像描述

标签: c#ms-accessoledb

解决方案


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

这应该工作...


推荐阅读