事务处理类(SQL) - .net语言 -

事务处理类(SQL)

时间:2010-01-27 16:48:45   来源:   评论:加载中...   点击:加载中...
这段代码包含了除对视图的操作外的所有数据库操作,写的很漂亮,写在这里可以不断的欣赏 。using System;using System.Collections;usin...

这段代码包含了除对视图的操作外的所有数据库操作,写的很漂亮,写在这里可以不断的欣赏 。

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Runtime.Remoting.Messaging;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace DB

{
     /// <summary>
     /// ADO.NET数据库操作基础类。
     /// </summary>
     public abstract class DbManagerSQL
     {
         //数据库连接字符串
         protected static string connectionString = ConfigurationSettings.AppSettings["ConnectionString"];
         public DbManagerSQL()
         {
             //
             // TODO: 在此处添加构造函数逻辑
             //
         }

         /// 执行SQL语句,返回影响的记录数
         public static int ExecuteSql(string SQLString)
         {
             SqlConnection connection = new SqlConnection(connectionString);

             {
                 SqlCommand cmd = new SqlCommand(SQLString, connection);
                 {
                     try
                     {
                         connection.Open();
                         int rows = cmd.ExecuteNonQuery();
                         return rows;
                     }
                     catch (System.Data.SqlClient.SqlException E)
                     {
                         throw new Exception(E.Message);
                     }
                 }
             }
         }

         /// 执行两条SQL语句,实现数据库事务。

         public static void ExecuteSqlTran(string SQLString1, string SQLString2)
         {
             SqlConnection connection = new SqlConnection(connectionString);
             {
                 connection.Open();
                 SqlCommand cmd = new SqlCommand();
                 cmd.Connection = connection;
                 SqlTransaction tx = connection.BeginTransaction();
                 cmd.Transaction = tx;
                 try
                 {
                     cmd.CommandText = SQLString1;
                     cmd.ExecuteNonQuery();
                     cmd.CommandText = SQLString2;
                     cmd.ExecuteNonQuery();
                     tx.Commit();
                 }
                 catch (System.Data.SqlClient.SqlException E)
                 {
                     tx.Rollback();
                     throw new Exception(E.Message);
                 }
                 finally
                 {
                     cmd.Dispose();
                     connection.Close();
                 }
             }
         }

         // 执行多条SQL语句,实现数据库事务,每条语句以“;”分割。
         public static void ExecuteSqlTran(string SQLStringList)
         {
             OdbcConnection conn = new OdbcConnection(connectionString);
             {
                 conn.Open();
                 OdbcCommand cmd = new OdbcCommand();
                 cmd.Connection = conn;
                 OdbcTransaction tx = conn.BeginTransaction();
                 cmd.Transaction = tx;
                 try
                 {
                     string[] split = SQLStringList.Split(new Char[] { ';' });
                     foreach (string strsql in split)
                     {
                         if (strsql.Trim() != "")
                         {
                             cmd.CommandText = strsql;
                             cmd.ExecuteNonQuery();
                         }
                     }
                     tx.Commit();
                 }
                 catch (System.Data.Odbc.OdbcException E)
                 {
                     tx.Rollback();
                     throw new Exception(E.Message);
                 }
             }
         }


         // 执行带一个存储过程参数的的SQL语句。
         public static int ExecuteSql(string SQLString, string content)
         {
             SqlConnection connection = new SqlConnection(connectionString);
             {
                 SqlCommand cmd = new SqlCommand(SQLString, connection);
                 System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
                 myParameter.Value = content;
                 cmd.Parameters.Add(myParameter);
                 try
                 {
                     connection.Open();
                     int rows = cmd.ExecuteNonQuery();
                     return rows;
                 }
                 catch (System.Data.SqlClient.SqlException E)
                 {
                     throw new Exception(E.Message);
                 }
                 finally
                 {
                     cmd.Dispose();
                     connection.Close();
                 }
             }
         }


         // 向数据库里插入图像格式的字段
         public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
         {
             using (SqlConnection connection = new SqlConnection(connectionString))
             {
                 SqlCommand cmd = new SqlCommand(strSQL, connection);
                 System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image);
                 myParameter.Value = fs;
                 cmd.Parameters.Add(myParameter);
                 try
                 {
                     connection.Open();
                     int rows = cmd.ExecuteNonQuery();
                     return rows;
                 }
                 catch (System.Data.SqlClient.SqlException E)
                 {
                     throw new Exception(E.Message);
                 }
                 finally
                 {
                     cmd.Dispose();
                     connection.Close();
                 }
             }
         }


         // 执行一条计算查询结果语句,返回查询结果(整数)。
         public static int GetCount(string strSQL)
         {
             SqlConnection connection = new SqlConnection(connectionString);
             {
                 SqlCommand cmd = new SqlCommand(strSQL, connection);
                 try
                 {
                     connection.Open();
                     SqlDataReader result = cmd.ExecuteReader();
                     int i = 0;
                     while (result.Read())
                     {
                         i = result.GetInt32(0);
                     }
                     result.Close();
                     return i;
                 }
                 catch (System.Data.SqlClient.SqlException e)
                 {
                     throw new Exception(e.Message);
                 }
                 finally
                 {
                     cmd.Dispose();
                     connection.Close();
                 }
             }
         }


         /// 执行一条计算查询结果语句,返回查询结果(object)
         public static object GetSingle(string SQLString)
         {
             SqlConnection connection = new SqlConnection(connectionString);
             SqlCommand cmd = new SqlCommand(SQLString, connection);
             try
             {
                 connection.Open();
                 object obj = cmd.ExecuteScalar();
                 if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                 {
                     return null;
                 }
                 else
                 {
                     return obj;
                 }
             }
             catch (System.Data.SqlClient.SqlException e)
             {
                 throw new Exception(e.Message);
             }
             finally
             {
                 cmd.Dispose();
                 connection.Close();
             }
         }


         /// 执行查询语句,返回SqlDataReader
         public static SqlDataReader ExecuteReader(string strSQL)
         {
             SqlConnection connection = new SqlConnection(connectionString);

             SqlCommand cmd = new SqlCommand(strSQL, connection);
             SqlDataReader myReader;
             try
             {
                 connection.Open();
                 myReader = cmd.ExecuteReader();
                 return myReader;
             }
             catch (System.Data.SqlClient.SqlException e)
             {
                 throw new Exception(e.Message);
             }
             finally
             {
                 cmd.Dispose();
                 connection.Close();
             }
         }


         // 执行查询语句,返回DataSet
         public static DataSet Query(string SQLString)
         {
             SqlConnection connection = new SqlConnection(connectionString);

             DataSet ds = new DataSet();
             try
             {
                 connection.Open();
                 SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
                 command.Fill(ds, "ds");
             }
             catch (System.Data.SqlClient.SqlException ex)
             {
                 throw new Exception(ex.Message);
             }
             return ds;


         }

     }
}



相关热词搜索:

 
上一篇:.net 数据库访问类
下一篇:数据库备份恢复机制
收藏 将此文推荐给朋友
分享到: