各位大虾:
    小弟有一问题请教。
sql = "update Pub_Product_Ratio set Enabled='0' where ProductID = " +  ProductID  + " and EffectDate < " + CurDate + " ";
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
int flag = cmd.ExecuteNonQuery();
conn.Close();
<<数据库为Sql-Server2000>>
表Pub_Product_Ratio中为什么EffectDate只能是datetime类型的,我换成了nvarchar类型的就会报错
可是我需要nvarchar类型的啊
System.Data.SqlClient.SqlException: 第 1 行: '11' 附近有语法错误。
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at DataAccess.Pub_Product_Ratio.UpdateSetEnabled(String CurDate, String maxDate, String mode, String ProductID) in e:\ruanmw\wwwroot\finasales\dataaccess\pub_product_ratio.cs:line 31
   at WebService.PubManage.myTest(String CurProductID, String CurDate, String mode) in e:\ruanmw\wwwroot\finasales\webservice\pubmanage.asmx.cs:line 89

解决方案 »

  1.   

    你的nvarchar类型是不是类似20051011这样的日期格式?好像这种格式数据库是不认识的啊.你可改用2005-10-11这样看看.
      

  2.   

    如果EffectDate是nvarchar类型需要进行类型转换后再比较日期大小
      

  3.   

    跟踪调试一下把生成的sql拿出来到查询分析器中执行一下不就知道了!
      

  4.   

    先对EffectDate作类型转换,再调用。
      

  5.   

    报错应该是因为你少了',改成这样:
    EffectDate < '" + CurDate + "'";(注意有')至于用varchar比较日期没有试过不知道行不行