小弟最近在苦练C#,苦于无源码练兵,最近终于搜到一C#源码,可以编译通过....但原程序是使用SQL数据库,小弟由于条件的限制,暂时只能用access,所以对源码进行大修改,全部改成oledb的,然后就出现这样的错误:标准表达式类型不匹配!!!
特登出出错的关键语句,望各位GGJJ们多多指点啦:)
DateTime mytime=new DateTime();
mytime=Convert.ToDateTime(now.Date);
mysql="SELECT COUNT(huifu_id) FROM huifu WHERE shijian<'"+mytime+"'and shijian>'"+now.Date.AddDays(-1)+"'";
mycomm=new OleDbCommand(mysql,myconn);
reader=mycomm.ExecuteReader(); 到底是怎么回事呢?是因为OleDbCommand跟SqlCommand对日期型的要求不一样?我在access里的huifu里的shijian字段是就是日期型的,格式是常规日期;如果要使这个错误不出现 ,要作哪些修改呢??
特登出出错的关键语句,望各位GGJJ们多多指点啦:)
DateTime mytime=new DateTime();
mytime=Convert.ToDateTime(now.Date);
mysql="SELECT COUNT(huifu_id) FROM huifu WHERE shijian<'"+mytime+"'and shijian>'"+now.Date.AddDays(-1)+"'";
mycomm=new OleDbCommand(mysql,myconn);
reader=mycomm.ExecuteReader(); 到底是怎么回事呢?是因为OleDbCommand跟SqlCommand对日期型的要求不一样?我在access里的huifu里的shijian字段是就是日期型的,格式是常规日期;如果要使这个错误不出现 ,要作哪些修改呢??
mysql="SELECT COUNT(huifu_id) FROM huifu WHERE shijian<@d1 and shijian>@d2"然new OleDbParameter("@d1",mytime); new ......再把参数Add进去执行.
我修改的代码如下:
DateTime mytime=new DateTime();
mytime=Convert.ToDateTime(now.Date);
mysql="select count (huifu_id) from huifu where shijian < @mytime and shijian > @ mytime1 ";
mycomm=new OleDbCommand(mysql,myconn);
mycomm.Parameters.Add(new OleDbParameter("@mytime", OleDbType.DBTimeStamp)).Value=mytime;
mycomm.Parameters.Add(new OleDbParameter("@mytime1", OleDbType.DBTimeStamp)).Value=now.Date.AddDays(-1);
reader=mycomm.ExecuteReader();注:reader是全局变量,前面已经声明过了真不知道我的语法是不是有错,不过我以前也有过这个进行sql的操作,没有发生这样的错误,不知道问题出在哪里,望各位GGJJ再次指正!!
public void CreateMyOleDbCommand(OleDbConnection myConnection,
string mySelectQuery, OleDbParameter[] myParamArray) {
OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection);
myCommand.CommandText = "SELECT CustomerID, CompanyName FROM Customers WHERE Country = ? AND City = ?";
myCommand.Parameters.Add(myParamArray);
for (int j=0; j<myParamArray.Length; j++)
{
myCommand.Parameters.Add(myParamArray[j]) ;
}
}