【问题标题】:Error "Specified cast is not valid" in query查询中出现错误“指定的演员表无效”
【发布时间】:2013-02-01 16:32:19
【问题描述】:

我有一个有趣的问题。我想执行这个查询,但是发生了这个错误:

“指定的强制转换无效。”

任何人都可以帮助我吗?

这是我的代码:

 string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection sqlconn = new SqlConnection(connStr);
        SqlCommand sqlcmd = new SqlCommand();
        sqlcmd = new SqlCommand("SELECT max(ID) FROM AddNews ", sqlconn);

        sqlconn.Open();
        int ID = ((int)sqlcmd.ExecuteScalar());
        sqlconn.Close();

【问题讨论】:

  • 检查“sqlcmd.ExecuteScalar());”的返回类型
  • 正好是一个整数!

标签: asp.net sql


【解决方案1】:

有一种情况,你可能没有结果,返回可以为空。

你最好试试

int? MaxID = sqlcmd.ExecuteScalar() as int?;

并检查 MaxID 是否不为空。

【讨论】:

    【解决方案2】:

    结果在 SQL 级别被强制转换为 int。返回的值将是一个 int,如果为 null,则默认为 0。

    您可以使用Convert.ToInt32(sqlCmd.ExecuteScalar()) 代替 (int) 或(int?)sqlCmd.ExecuteScalar() ?? 0;

    【讨论】:

      【解决方案3】:
      you have to change as follow
      
      
      int ID=int.Parse(cmd.ExecuteScalar().ToString());
      

      【讨论】:

        【解决方案4】:

        使用Convert.ToInt32(value) 代替((int)value)。它会起作用的。

        【讨论】:

          【解决方案5】:
          sqlcmd.ExecuteScalar()); 
          

          它返回一个对象而不是 int。

          试试这个

          Object s= cmd.ExecuteScalar()
          int x=Integer.Parse(s.ToString))
          

          【讨论】:

            【解决方案6】:

            你可以先测试你的值是否是 int

            int ID;
            int.TryParse(sqlcmd.ExecuteScalar(), out ID);
            

            【讨论】:

              猜你喜欢
              • 2012-03-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-02-06
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多