增加事务与防注入参数的数据库连接类

access:

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Data.OleDb;
using System.Data;
using System.Diagnostics;
using System.Collections.Generic;

public class AccessDBUtil
{
    
private static String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
            System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationManager.AppSettings[
"ConnectString"]);
    
private AccessDBUtil()
    {
        
    }
    
    
//执行单条插入语句,并返回id,不需要返回id的用ExceuteNonQuery执行。
    public static int ExecuteInsert(string sql,OleDbParameter[] parameters)
    {
        
//Debug.WriteLine(sql);
        using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
            OleDbCommand cmd 
= new OleDbCommand(sql, connection);
            
try
            {
                connection.Open();
                
if(parameters!=null) cmd.Parameters.AddRange(parameters);
                cmd.ExecuteNonQuery();
                cmd.CommandText 
= @"select @@identity";
                
int value = Int32.Parse(cmd.ExecuteScalar().ToString());
                
return value;
            }
            
catch (Exception e)
            {
                
throw e;
            }
        }
    }
    
public static int ExecuteInsert(string sql)
    {
        
return ExecuteInsert(sql,null);
    }
    
    
//执行带参数的sql语句,返回影响的记录数(insert,update,delete)
    public static int ExecuteNonQuery(string sql,OleDbParameter[] parameters)
    {
        
//Debug.WriteLine(sql);
        using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
            OleDbCommand cmd 
= new OleDbCommand(sql, connection);
            
try
            {
                connection.Open();
                
if(parameters!=null) cmd.Parameters.AddRange(parameters);
                
int rows = cmd.ExecuteNonQuery();
                
return rows;
            }
            
catch (Exception e)
            {
                
throw e;
            }
        }
    }
    
//执行不带参数的sql语句,返回影响的记录数
    
//不建议使用拼出来SQL
    public static int ExecuteNonQuery(string sql)
    {
        
return ExecuteNonQuery(sql,null);
    }
    
    
//执行单条语句返回第一行第一列,可以用来返回count(*)
    public static int ExecuteScalar(string sql,OleDbParameter[] parameters)
    {
        
//Debug.WriteLine(sql);
        using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
            OleDbCommand cmd 
= new OleDbCommand(sql, connection);
            
try
            {
                connection.Open();
                
if(parameters!=null) cmd.Parameters.AddRange(parameters);
                
int value = Int32.Parse(cmd.ExecuteScalar().ToString());
                
return value;
            }
            
catch (Exception e)
            {
                
throw e;
            }
        }
    }
    
public static int ExecuteScalar(string sql)
    {
        
return ExecuteScalar(sql,null);
    }
    
    
//执行事务
    public static void ExecuteTrans(List<string> sqlList,List<OleDbParameter[]> paraList)
    {
        
//Debug.WriteLine(sql);
        using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
            OleDbCommand cmd 
= new OleDbCommand();
            OleDbTransaction transaction 
= null;
            cmd.Connection 
= connection;
            
try
            {
                connection.Open();
                transaction 
= connection.BeginTransaction();
                cmd.Transaction 
= transaction;
                
                
for(int i=0;i<sqlList.Count;i++)
                {
                    cmd.CommandText
=sqlList[i];
                    
if(paraList!=null&&paraList[i]!=null
                    {
                        cmd.Parameters.Clear();
                        cmd.Parameters.AddRange(paraList[i]);
                    }
                    cmd.ExecuteNonQuery();
                }
                transaction.Commit();

            }
            
catch (Exception e)
            {
                
try
                {
                    transaction.Rollback();
                }
                
catch
                {
                   
                }
                
throw e;
            }
            
        }
    }
    
public static void ExecuteTrans(List<string> sqlList)
    {
        ExecuteTrans(sqlList,
null);
    }

    
//执行查询语句,返回dataset
    public static DataSet ExecuteQuery(string sql,OleDbParameter[] parameters)
    {
        
//Debug.WriteLine(sql);
        using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
            DataSet ds 
= new DataSet();
            
try
            {
                connection.Open();
                
                OleDbDataAdapter da 
= new OleDbDataAdapter(sql, connection);
                
if(parameters!=null) da.SelectCommand.Parameters.AddRange(parameters);
                da.Fill(ds,
"ds");
            }
            
catch (Exception ex)
            {
                
throw ex;
            }
            
return ds;
        }
    }
    
public static DataSet ExecuteQuery(string sql)
    {
        
return ExecuteQuery(sql,null);
    }
    
//执行查询语句返回datareader,使用后要注意close
    
//这个函数在AccessPageUtils中使用,执行其它查询时最好不要用
    public static OleDbDataReader ExecuteReader(string sql)
    {
        
//Debug.WriteLine(sql);
        OleDbConnection connection = new OleDbConnection(connectionString);
        OleDbCommand cmd 
= new OleDbCommand(sql, connection);
        
try
        {
            connection.Open();
            
return  cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }
        
catch (Exception e)
        {
            connection.Close();
            
throw e;
        }
    }
    
}

 

sql server:

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;


class SqlServerUtil
{
    
private static String connectionString = System.Configuration.ConfigurationSettings.AppSettings["ConnectString"];
    
private SqlServerUtil() { }

    
#region 查询操作
    
/// <summary>
    
/// 执行查询语句,返回dataset
    
/// </summary>
    
/// <param name="sql">sql语句</param>
    
/// <param name="parameters">参数</param>
    
/// <returns>所查询的数据集</returns>
    public static DataSet ExecuteQuery(string sql, SqlParameter[] parameters)
    {
        
using (SqlConnection con = new SqlConnection(connectionString))
        {
            DataSet ds 
= new DataSet();
            
try
            {
                con.Open();
                SqlDataAdapter adapter 
= new SqlDataAdapter(sql, con);
                
if (parameters != null)
                    adapter.SelectCommand.Parameters.AddRange(parameters);

                adapter.Fill(ds);
            }
            
catch (Exception ex)
            {
                
throw ex;
            }
            
return ds;
        }
    }

    
public static DataSet ExecuteQuery(string sql)
    {
        
return ExecuteQuery(sql, null);
    }

    
/// <summary>
    
/// 此查询操作只返回所查询结果的第一行第一列,速度比使用Adapter快很多
    
/// </summary>
    
/// <param name="sql"></param>
    
/// <param name="parameters"></param>
    
/// <returns>返回第一行第一列,类型为object</returns>
    public static object ExecuteScalar(string sql, SqlParameter[] parameters)
    {
        
using (SqlConnection con = new SqlConnection(connectionString))
        {
            SqlCommand cmd 
= new SqlCommand(sql,con);
            
try
            {
                con.Open();
                
if (parameters != null)
                {
                    cmd.Parameters.AddRange(parameters);
                }
                
return cmd.ExecuteScalar();
            }
            
catch (Exception ex)
            {
                
throw ex;
            }
        }
    }

    
public static object ExecuteScalar(string sql)
    {
        
return ExecuteScalar(sql, null);
    }

    
/// <summary>
    
/// 执行查询语句返回datareader,使用后要注意close
    
/// </summary>
    
/// <param name="sql"></param>
    
/// <returns></returns>
    public static SqlDataReader ExecuteReader(string sql)
    {
        SqlConnection con 
= new SqlConnection(connectionString);
        SqlCommand cmd 
= new SqlCommand(sql, con);
        
try
        {
            con.Open();
            
//传递CommandBehavior.CloseConnection 枚举变量,这样在调用SqlDataReader的Close方法时会自动关闭数据库连接
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }
        
catch (Exception ex)
        {
            con.Close();
            
throw;
        }
    }
    
#endregion

    
#region 插入、删除、更新操作
    
/// <summary>
    
/// 执行带参数的sql语句,返回影响的记录数
    
/// </summary>
    
/// <param name="sql"></param>
    
/// <param name="parameters"></param>
    
/// <returns></returns>
    public static int ExecuteNonQuery(string sql, SqlParameter[] parameters)
    {
        
using (SqlConnection con = new SqlConnection(connectionString))
        {
            SqlCommand cmd 
= new SqlCommand(sql, con);
            
try
            {
                con.Open();
                
if (parameters != null)
                {
                    cmd.Parameters.AddRange(parameters);
                }
                
return cmd.ExecuteNonQuery();
            }
            
catch (Exception ex)
            {
                
throw ex;
            }
        }
    }

    
public static int ExecuteNonQuery(string sql)
    {
        
return ExecuteNonQuery(sql, null);
    }

    
/// <summary>
    
/// 执行单条插入语句,并返回id,不需要返回id的用ExceuteNonQuery执行。
    
/// </summary>
    
/// <param name="sql"></param>
    
/// <param name="parameters"></param>
    
/// <returns></returns>
    public static int ExecuteInsert(string sql, SqlParameter[] parameters)
    {
        
using (SqlConnection con = new SqlConnection(connectionString))
        {
            SqlCommand cmd 
= new SqlCommand(sql, con);
            
try
            {
                con.Open();
                
if (parameters != null)
                {
                    cmd.Parameters.AddRange(parameters);
                }
                cmd.ExecuteNonQuery();
                cmd.CommandText 
= @"select @@identity";
                
return int.Parse(cmd.ExecuteScalar().ToString());
            }
            
catch (Exception ex)
            {
                
throw ex;
            }
        }
    }

    
public static int ExecuteInsert(string sql)
    {
        
return ExecuteInsert(sql, null);
    }
    
#endregion

    
#region 事务处理
    
public static void ExecuteTrans(List<string> sqlList, List<SqlParameter[]> paraList)
    {
        
using (SqlConnection con = new SqlConnection(connectionString))
        {
            SqlCommand cmd 
= new SqlCommand();
            SqlTransaction transaction 
= null;
            cmd.Connection 
= con;
            
try
            {
                con.Open();
                transaction 
= con.BeginTransaction();
                cmd.Transaction 
= transaction;

                
for (int i = 0; i < sqlList.Count; i++)
                {
                    cmd.CommandText 
= sqlList[i];
                    
if (paraList != null && paraList[i] != null)
                    {
                        cmd.Parameters.Clear();
                        cmd.Parameters.AddRange(paraList[i]);
                    }
                    cmd.ExecuteNonQuery();
                }
                transaction.Commit();
            }
            
catch (Exception ex)
            {
                
try
                {
                    transaction.Rollback();
                }
                
catch 
                {
                }
                
throw ex;
            }
        }
    }
    
#endregion
}

转载于:https://www.cnblogs.com/lolicon/archive/2009/01/08/1371787.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值