存储过程。
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[Data_UserInfo_T_CompanyName]
@T_CompanyName VarChar(100)
AS
select Count(*) from T_UserInfo where T_CompanyName=@T_CompanyName //判断是否存在
bool T_CompanyName = BLL.ServiceUser.XxX("aaa");BLL处理方法
public static bool XxX(string str)
        {
            try
            {
                SqlParameter[] strPar = {
new SqlParameter("@T_CompanyName", SqlDbType.VarChar,100)};
                strPar[0].Value = str;
                return (DBUtility.SqlHelper.ExecuteNonQuery(DBUtility.SqlHelper.sqlConnectionString, CommandType.StoredProcedure, "Data_UserInfo_T_CompanyName", strPar) > 0) ? true : false;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
SqlHelper 方法
 public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {            SqlCommand cmd = new SqlCommand();            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                int val = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return val;
            }
        }
PrepareCommand方法
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
        {
            if (conn.State != ConnectionState.Open)
                conn.Open();            cmd.Connection = conn;
            cmd.CommandText = cmdText;            if (trans != null)
                cmd.Transaction = trans;            cmd.CommandType = cmdType;            if (cmdParms != null)
            {
                foreach (SqlParameter parm in cmdParms)
                    cmd.Parameters.Add(parm);
            }
        }的出来的结果都为False  帮我看下

解决方案 »

  1.   

    你的这个存储过程是带输出参数的,加上这样一句:public static bool XxX(string str)
      {
      try
      {
      SqlParameter[] strPar = {
    new SqlParameter("@T_CompanyName", SqlDbType.VarChar,100)};
      strPar[0].Value = str.Trim();
      strPar[0].Direction = ParameterDirection.Output;  // 指定该参数对象为输出参数类型
      return (DBUtility.SqlHelper.ExecuteNonQuery(DBUtility.SqlHelper.sqlConnectionString, CommandType.StoredProcedure, "Data_UserInfo_T_CompanyName", strPar) > 0) ? true : false;
      }
      catch (Exception ex)
      {
      throw ex;
      }
      } param2
      

  2.   

    还有一个重要的地方在这:
    看红色部分public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
      {  SqlCommand cmd = new SqlCommand();  using (SqlConnection conn = new SqlConnection(connectionString))
      {
      PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
      int val = cmd.ExecuteNonQuery();
      cmd.Parameters.Clear();
      return val;
      }
      }更改成:int val = cmd.ExecuteScalar();即可
      

  3.   

    我想问下形参 "@T_CompanyName" 未声明为 OUTPUT 参数,但传递进来的实参请求输出。这个问题