日期:2014-05-17  浏览次数:20439 次

遇到一个灰常纠结的问题.....

这是一个自定义方法:
C# code
    public static int UpdataSql(string sql)
    {

        SqlConnection SqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString);
        SqlCon.Open();
        SqlCommand SqlCom = new SqlCommand(sql, SqlCon);
        return SqlCom.ExecuteNonQuery();
        SqlCon.Close();
    }


返回值为受影响的行数。

我在SQLSERVER里使用查询的时候 SQL语法也没错,也能查到。
可是 :
以下是button按钮的事件代码,主要目的是判断是否查到了值,如果没有就弹出没有查到内容的相关提示
C# code
int s = Sql.InsertSql(strsql);
        if (s > 0).....


  问题就是,这个s的值却始终是 -1,导致每次都查询不到想要的结果。
  我想知道,这是为什么?

------解决方案--------------------
执行ExecuteNonQuery时,只有insert,update,delete才返回行数哦!
select返回行数应该是:
public static int UpdataSql(string sql)
{
SqlConnection SqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString);
SqlCon.Open();
SqlCommand SqlCom = new SqlCommand(sql, SqlCon);
//return SqlCom.ExecuteNonQuery();
int n = Convert.ToInt16(SqlCom.ExecuteScalar());
SqlCon.Close();
return n;
}

调用:
int i = UpdataSql("select count(*) from 表 where ....");

还有你代码中的关闭连接根本没作用,因为之前已return了!