2011-06-24 114 views
0

我收到此错误消息:将varchar值'monthDate'转换为数据类型int时转换失败。将varchar转换为monthDate

我有这样的SQL语句:

String[][] results = lm.SqlSelect("SELECT COUNT(*) FROM members_ WHERE DATEPART(month, DateUnsub_) = 'monthDate' AND DATEPART(year, DateUnsub_) = 2011 AND DATEDIFF(day, DateJoined_, DateUnsub_) <= 30"); 

,我这里有一个int,其价值取决于dateLookup价值变动:

switch (dateLookup) 
     { 
      case "January": 
       monthDate = 01; 
       break; 
      case "February": 
       monthDate = 02; 
       break; 
      case "March": 
       monthDate = 03; 
       break; 
      case "April": 
       monthDate = 04; 
       break; 
      case "May": 
       monthDate = 05; 
       break; 
      case "June": 
       monthDate = 06; 
       break; 
      case "July": 
       monthDate = 07; 
       break; 
      case "August": 
       monthDate = 08; 
       break; 
      case "September": 
       monthDate = 09; 
       break; 
      case "October": 
       monthDate = 10; 
       break; 
      case "November": 
       monthDate = 11; 
       break; 
      case "December": 
       monthDate = 12; 
       break; 
     } 

我的问题是 - 哪里是VARCHAR来自哪里?例如,当我从SQL语句中取出“monthDate”变量并将其替换为数字05时,一切正常。

+0

这一切都在.aspx.cs文件中完成! –

回答

2

'monthDate'在您的查询字符串中不是一个变量。

我觉得应该是

String[][] results = lm.SqlSelect("SELECT COUNT(*) FROM members_ WHERE DATEPART(month, DateUnsub_) = " +monthDate + " AND DATEPART(year, DateUnsub_) = 2011 AND DATEDIFF(day, DateJoined_, DateUnsub_) <= 30"); 

考虑使用string.Format(),使其更可读或更好的,参数化的命令,以防止SQL注入攻击。

0

您的查询只选择行的计数。当你看着你的t-sql代码时,你没有选择其他的东西。

看到您的属性后,请使用下面的代码;

switch (dateLookup) 
    { 
     case "January": 
      monthDate = "01"; 
      break; 
     case "February": 
      monthDate = "02"; 
      break; 
     case "March": 
      monthDate = "03"; 
      break; 
     case "April": 
      monthDate = "04"; 
      break; 
     case "May": 
      monthDate = "05"; 
      break; 

依此类推。用英文,在你的号码前后加引号。

+0

是的,我只希望它显示一个月内订阅和取消订阅的客户数量。 –

+0

好的,但** dateLookup **和** monthDate **变量在哪里?向他们展示他们的定义。 – tugberk

+0

私人字符串dateLookup; public string DateLookup { get {return dateLookup; } set {dateLookup = value; } } public string monthDate; –