DB Object Global Class C# Important

using System;
using System.Data;
using System.Data.SqlClient;
using System.Xml;


//public abstract class DbObject 이와 같이 추상 클래스로 선언하게 되면 이하 다른 클래스가 직접 상속을 받아 사용해야 한다.
namespace VinsLib
{
public class DbObject
{
protected SqlConnection Connection;
private string connectionString;

public DbObject(string newConnectionString)
{
connectionString = newConnectionString;
Connection = new SqlConnection(connectionString);
}

protected string ConnectionString
{
get
{
return connectionString;
}
}

public SqlCommand BuildIntCommand(string storedProcName, SqlParameter[] parameters)
{
SqlCommand command = BuildQueryCommand(storedProcName, parameters);
command.Parameters.Add
(
new SqlParameter
(
"ReturnValue",
SqlDbType.Int,
4,/*Size*/
ParameterDirection.ReturnValue,
false,/*Null 허용여부*/
0,/*정밀도*/
0,/*스케일*/
string.Empty,
DataRowVersion.Default,null
)
);

return command;
}

public SqlCommand BuildQueryCommand(string storedProcName, SqlParameter[] parameters)
{
SqlCommand command = new SqlCommand(storedProcName, Connection);
command.CommandType = CommandType.StoredProcedure;

foreach(SqlParameter parameter in parameters)
{
command.Parameters.Add(parameter);
}

return command;
}

public int RunProcedure(string storedProcName, SqlParameter[] parameters, out int rowsAffected)
{
int result;
Connection.Open();
SqlCommand command = BuildIntCommand(storedProcName, parameters);
rowsAffected = command.ExecuteNonQuery();

result = (int)command.Parameters["ReturnValue"].Value;

Connection.Close();
rowsAffected = result;

return rowsAffected;
}

public SqlDataReader RunProcedure(string storedProcName, SqlParameter[] parameters)
{
SqlDataReader returnReader;

Connection.Open();
SqlCommand command = BuildQueryCommand(storedProcName, parameters);
command.CommandType = CommandType.StoredProcedure;

returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);

return returnReader;
}

public DataSet RunProcedure(string storedProcName, SqlParameter[] parameters, string tableName)
{
DataSet dataset = new DataSet();
Connection.Open();

SqlDataAdapter sqlDa = new SqlDataAdapter();
sqlDa.SelectCommand = BuildQueryCommand(storedProcName, parameters);

sqlDa.Fill(dataset, tableName);

Connection.Close();

return dataset;
}

public void RunProcedure(string storedProcName, SqlParameter[] parameters, DataSet dataset, string tableName)
{
Connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildIntCommand(storedProcName, parameters);
sqlDA.Fill(dataset, tableName);
Connection.Close();
}
}

}