问题描述
我用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.'
这是我的桌子的样子:
解决方法
您可以简单地使用DateTime对象中的Date属性来获取设置时间为零的DateTime部分,并使用TimeOfDay属性来获取DateTime对象的时间部分作为TimeSpan。
这应该有效...