封装一个通用的数据库操作类

最近写一个项目,我开发的方式首先设计数据库,然后用网上免费的代码生成软件CodePlus V2.0生成mode对象,同时封装操作方法,在与数据库操作方面我封装了一个数据操作类,很方便,贡献出来。

ContractedBlock.gif ExpandedBlockStart.gif Code
    public static class SqlPlus
ExpandedBlockStart.gifContractedBlock.gif    
{

        
// Hashtable to store cached parameters
        private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());

        
public static string connectionString = "Data Source=spsserver;Initial Catalog=Cooec;uid=sa;pwd=ssssaaaa";

        
public static SqlTransaction GetTransaction()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
using (SqlConnection connection = new SqlConnection(SqlPlus.connectionString))
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                connection.Open();
                SqlTransaction trans 
= connection.BeginTransaction();
                
return trans;
            }

        }


        
public static void ConnClose(SqlConnection connection)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
if (connection.State == ConnectionState.Open)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                connection.Close();
            }

        }


        
public static int ExecuteNonQuery(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            SqlCommand cmd 
= new SqlCommand();
            
using (SqlConnection conn = new SqlConnection(SqlPlus.connectionString))
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                PrepareCommand(cmd, conn, 
null, cmdType, cmdText, commandParameters);
                
int val = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                
return val;
            }

        }


        
public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{

            SqlCommand cmd 
= new SqlCommand();

            PrepareCommand(cmd, connection, 
null, cmdType, cmdText, commandParameters);
            
int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            
return val;
        }


        
public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            SqlCommand cmd 
= new SqlCommand();
            PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
            
int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            
return val;
        }


        
public static SqlDataReader ExecuteReader(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            SqlCommand cmd 
= new SqlCommand();
            SqlConnection conn 
= new SqlConnection(SqlPlus.connectionString);

            
// we use a try/catch here because if the method throws an exception we want to 
            
// close the connection throw code, because no datareader will exist, hence the 
            
// commandBehaviour.CloseConnection will not work
            try
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                PrepareCommand(cmd, conn, 
null, cmdType, cmdText, commandParameters);
                SqlDataReader rdr 
= cmd.ExecuteReader(CommandBehavior.CloseConnection);
                cmd.Parameters.Clear();
                
return rdr;
            }

            
catch
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                conn.Close();
                
throw;
            }

        }


        
public static object ExecuteScalar(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            SqlCommand cmd 
= new SqlCommand();

            
using (SqlConnection connection = new SqlConnection(SqlPlus.connectionString))
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                PrepareCommand(cmd, connection, 
null, cmdType, cmdText, commandParameters);
                
object val = cmd.ExecuteScalar();
                cmd.Parameters.Clear();
                
return val;
            }

        }


        
public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{

            SqlCommand cmd 
= new SqlCommand();

            PrepareCommand(cmd, connection, 
null, cmdType, cmdText, commandParameters);
            
object val = cmd.ExecuteScalar();
            cmd.Parameters.Clear();
            
return val;
        }


        
public static DataTable ExecuteDataTable(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            SqlCommand cmd 
= new SqlCommand();
            DataTable oTab 
= new DataTable();
            
using (SqlConnection connection = new SqlConnection(SqlPlus.connectionString))
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                PrepareCommand(cmd, connection, 
null, cmdType, cmdText, commandParameters);
                SqlDataAdapter adp 
= new SqlDataAdapter(cmd);
                adp.Fill(oTab);
            }

            
return oTab;
        }


        
public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            parmCache[cacheKey] 
= commandParameters;
        }


        
public static SqlParameter[] GetCachedParameters(string cacheKey)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            SqlParameter[] cachedParms 
= (SqlParameter[])parmCache[cacheKey];

            
if (cachedParms == null)
                
return null;

            SqlParameter[] clonedParms 
= new SqlParameter[cachedParms.Length];

            
for (int i = 0, j = cachedParms.Length; i < j; i++)
                clonedParms[i] 
= (SqlParameter)((ICloneable)cachedParms[i]).Clone();

            
return clonedParms;
        }


        
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{

            
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)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
foreach (SqlParameter parm in cmdParms)
                    cmd.Parameters.Add(parm);
            }

        }

    }


    
public static class Database
ExpandedBlockStart.gifContractedBlock.gif    
{
        
public static SqlParameter MakeInParam(string parameterName, SqlDbType dbType, int size)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            SqlParameter sqlPar 
= new SqlParameter(parameterName, dbType, size);
            
return sqlPar;
        }

        
public static SqlParameter MakeInParam(string parameterName, SqlDbType dbType, int size, object oValue)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            SqlParameter sqlPar 
= new SqlParameter(parameterName, dbType, size);
            sqlPar.Value 
= oValue;
            
return sqlPar;
        }

        
public static SqlParameter MakeInParam(string parameterName, SqlDbType dbType, int size, string sValue)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            SqlParameter sqlPar 
= new SqlParameter(parameterName, dbType, size);
            sqlPar.Value 
= sValue;
            
return sqlPar;
        }

        
public static SqlParameter MakeInParam(string parameterName, SqlDbType dbType, int size, int iValue)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            SqlParameter sqlPar 
= new SqlParameter(parameterName, dbType, size);
            sqlPar.Value 
= iValue;
            
return sqlPar;
        }

        
public static SqlParameter MakeInParam(string parameterName, SqlDbType dbType, int size, DateTime dValue)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            SqlParameter sqlPar 
= new SqlParameter(parameterName, dbType, size);
            
if (dValue == DateTime.MinValue)
                sqlPar.Value 
= DBNull.Value;
            
else
                sqlPar.Value 
= dValue;
            
return sqlPar;
        }

        
public static SqlParameter MakeInParam(string parameterName, SqlDbType dbType, int size, double dValue)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            SqlParameter sqlPar 
= new SqlParameter(parameterName, dbType, size);
            sqlPar.Value 
= dValue;
            
return sqlPar;
        }

        
public static string ValueToString(object oValue)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
if (oValue == System.DBNull.Value)
                
return "";
            
else
                
return oValue.ToString();
        }

        
public static DateTime ValueToDateTime(object oValue)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
if (oValue == System.DBNull.Value)
                
return DateTime.MinValue;
            
else
                
return Convert.ToDateTime(oValue);
        }

        
public static int ValueToInt(object oValue)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
if (oValue == System.DBNull.Value)
                
return int.MinValue;
            
else
                
return Convert.ToInt32(oValue);
        }

    }

转载于:https://www.cnblogs.com/luking/archive/2008/10/20/1315186.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值