/// <summary> /// 执行指定数据库连接对象的命令,指定参数,返回结果集中的第一行第一列. /// </summary> /// <remarks> /// 示例: /// int orderCount = (int)ExecuteScalar(conn, CommandType.StoredProcedure, "GetOrderCount", new DB2Parameter("@prodid", 24)); /// </remarks> /// <param name="connection">一个有效的数据库连接对象</param> /// <param name="commandType">命令类型 (存储过程,命令文本或其它)</param> /// <param name="commandText">存储过程名称或T-SQL语句</param> /// <param name="commandParameters">分配给命令的DB2Paramter参数数组</param> /// <returns>返回结果集中的第一行第一列</returns> public static object ExecuteScalar(DB2Connection connection, CommandType commandType, string commandText, params DB2Parameter[] commandParameters) { if (connection == null) throw new ArgumentNullException("connection"); // 创建DB2Command命令,并进行预处理 DB2Command cmd = new DB2Command(); bool mustCloseConnection = false; PrepareCommand(cmd, connection, (DB2Transaction)null, commandType, commandText, commandParameters, out mustCloseConnection); // 执行DB2Command命令,并返回结果. object retval = cmd.ExecuteScalar(); // 清除参数,以便再次使用. cmd.Parameters.Clear(); if (mustCloseConnection) connection.Close(); return retval; }
/// <summary> /// 执行指定数据库事务的命令,指定参数,返回结果集中的第一行第一列. /// </summary> /// <remarks> /// 示例: /// int orderCount = (int)ExecuteScalar(trans, CommandType.StoredProcedure, "GetOrderCount", new DB2Parameter("@prodid", 24)); /// </remarks> /// <param name="transaction">一个有效的连接事务</param> /// <param name="commandType">命令类型 (存储过程,命令文本或其它)</param> /// <param name="commandText">存储过程名称或T-SQL语句</param> /// <param name="commandParameters">分配给命令的DB2Paramter参数数组</param> /// <returns>返回结果集中的第一行第一列</returns> public static object ExecuteScalar(DB2Transaction transaction, CommandType commandType, string commandText, params DB2Parameter[] commandParameters) { if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); // 创建DB2Command命令,并进行预处理 DB2Command cmd = new DB2Command(); bool mustCloseConnection = false; PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters, out mustCloseConnection); // 执行DB2Command命令,并返回结果. object retval = cmd.ExecuteScalar(); // 清除参数,以便再次使用. cmd.Parameters.Clear(); return retval; }
/// <summary> /// Returns the first column of the first row in the executed query. Additional rows and columns are ignored. /// </summary> /// <param name="command">Command (Text command or Stored Procedure)</param> /// <param name="type">Type of command (text, stored procedure or table-direct)</param> /// <returns></returns> public object ExecuteScalar(string command, CommandType type) { object value = null; try { using (DB2Connection connection = new DB2Connection(connectionString.ConnectionString)) { using (DB2Command cmd = new DB2Command(command)) { cmd.Connection = connection; foreach (DB2Parameter parameter in Parameters) { cmd.Parameters.Add(parameter); } cmd.CommandType = type; cmd.Connection.Open(); value = cmd.ExecuteScalar(); cmd.Connection.Close(); } } } catch (Exception ex) { Error aError = new Error(ex.Source, ex.Message, GetCurrentMethod()); ErrorList.Add(aError); } return value; }