C#對SQLite、Access數據庫操作的封裝,很好用的~


1、對SQLite的封裝:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SQLite;

namespace DataBaseHelper
{
    public class SQLiteHelper
    {
        SQLiteConnection connection = null;
        SQLiteTransaction transaction = null;
        string conn_str = "";

        //----創建連接串並連接數據庫----
        public SQLiteHelper(string path, string password)
        {
            conn_str = "data source=" + path + ";password=" + password;
        }

        public bool Connect()
        {
            try
            {
                if (connection != null)
                { 
                    connection.Close();
                    connection = null;
                }

                connection = new SQLiteConnection(conn_str); 
                connection.Open();
                if (connection == null)
                {
                    return false;
                }
                return true;
            }
            catch (SQLiteException ex)
            {
                return false;
            }
        }

        //----修改數據庫密碼----
        public bool ChangePassword(string newPassword)
        {
            try
            {
                connection.ChangePassword(newPassword);
                return true;
            }
            catch (SQLiteException ex)
            {
                return false;
            }
        }

        //----關閉數據庫連接----
        public bool DisConnect()
        {
            try
            {
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
                return true;
            }
            catch (SQLiteException ex)
            {
                return false;
            }
        }

        /// <summary> 
        /// 執行一個查詢語句,返回一個包含查詢結果的DataTable 
        /// </summary> 
        /// <param name="sql">要執行的查詢語句</param> 
        /// <param name="parameters">執行SQL查詢語句所需要的參數,參數必須以它們在SQL語句中的順序為准</param> 
        /// <returns></returns> 
        public DataTable ExecuteDataTable(string sql, SQLiteParameter[] parameters)
        {
            try
            {
                using (SQLiteCommand Command = new SQLiteCommand(sql, connection))
                {
                    if (parameters != null)
                    {
                        Command.Parameters.AddRange(parameters);
                    }
                    SQLiteDataAdapter adapter = new SQLiteDataAdapter(Command);
                    DataTable dataTable = new DataTable();
                    adapter.Fill(dataTable);
                    return dataTable;
                }
            }
            catch (SQLiteException ex)
            {
                return null;
            }
        }

        /// <summary> 
        /// 對SQLite數據庫執行增刪改操作,返回受影響的行數。 
        /// </summary> 
        /// <param name="sql">要執行的增刪改的SQL語句</param> 
        /// <param name="parameters">執行增刪改語句所需要的參數,參數必須以它們在SQL語句中的順序為准</param> 
        /// <returns></returns> 
        public int ExecuteNonQuery(string sql, SQLiteParameter[] parameters)
        {
            int affectRows = 0;

            try
            {
                using (SQLiteTransaction Transaction = connection.BeginTransaction())
                {
                    using (SQLiteCommand Command = new SQLiteCommand(sql, connection, Transaction))
                    {
                        if (parameters != null)
                        {
                            Command.Parameters.AddRange(parameters);
                        }
                        affectRows = Command.ExecuteNonQuery();
                    }
                    Transaction.Commit();
                }
            }
            catch (SQLiteException ex)
            {
                affectRows = -1;
            }
            return affectRows;
        }

        //收縮數據庫 VACUUM 
        public bool Vacuum()
        {
            try
            {
                using (SQLiteCommand Command = new SQLiteCommand("VACUUM", connection))
                {
                    Command.ExecuteNonQuery();
                }
                return true;
            }
            catch (System.Data.SQLite.SQLiteException ex)
            {
                return false;
            }

        }

        public void BeginTransaction()
        {
            try
            {
                transaction = connection.BeginTransaction();
            }
            catch (SQLiteException ex)
            { 
            
            }
        }

        public void CommitTransaction()
        {
            try
            {
                transaction.Commit();
            }
            catch (SQLiteException ex)
            {

            }
        }

        public void RollbackTransaction()
        {
            try
            {
                transaction.Rollback();
            }
            catch (SQLiteException ex)
            {

            }
        }

        public void test()
        {
            SQLiteHelper helper = new SQLiteHelper("D:\\mysqlite.db","123456");     //連接到D盤下的mysqlite.db數據庫,連接密碼為123456
            //bool ch = helper.ChangePassword("654321");                            //將密碼修改為:654321
            helper.Connect();

            string select_sql = "select * from student";                            //查詢的SQL語句
            DataTable dt = helper.ExecuteDataTable(select_sql, null);               //執行查詢操作,結果存放在dt中

            //向數據庫中student表中插入了一條(name = "馬兆瑞",sex = "男",telephone = "15550000000")的記錄
            string insert_sql = "insert into student(name,sex,telephone) values(?,?,?)";        //插入的SQL語句(帶參數)
            SQLiteParameter[] para = new SQLiteParameter[3];                        //構造並綁定參數
            string[] tag = { "name", "sex", "telephone" };
            string[] value = { "馬兆瑞","","15550000000"};
            for (int i = 0; i < 3; i++)
            {
                para[i] = new SQLiteParameter(tag[i], value[i]);                    
            }
            int ret = helper.ExecuteNonQuery(insert_sql, para);                     //執行插入操作
        }
    }
}

 

2、對Access的封裝:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;

namespace DataBaseHelper
{
    public class AccessHelper
    {
        OleDbConnection connection = null;
        OleDbTransaction transaction = null;
        string conn_str = "";

        //----創建連接串並連接數據庫----
        public AccessHelper(string path, string password)
        {
            conn_str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Jet OLEDB:Database Password= " + password;
        }

        public bool Connect()
        {
            try
            {
                if (connection != null)
                { 
                    connection.Close();
                    connection = null;
                }

                connection = new OleDbConnection(conn_str); 
                connection.Open();
                if (connection == null)
                {
                    return false;
                }
                return true;
            }
            catch (OleDbException ex)
            {
                return false;
            }
        }

        ////----修改數據庫密碼----
        //public bool ChangePassword(string newPassword)
        //{
        //    try
        //    {
        //        connection.ChangePassword(newPassword);
        //        return true;
        //    }
        //    catch (OleDbException ex)
        //    {
        //        return false;
        //    }
        //}

        //----關閉數據庫連接----
        public bool DisConnect()
        {
            try
            {
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
                return true;
            }
            catch (OleDbException ex)
            {
                return false;
            }
        }

        /// <summary> 
        /// 執行一個查詢語句,返回一個包含查詢結果的DataTable 
        /// </summary> 
        /// <param name="sql">要執行的查詢語句</param> 
        /// <param name="parameters">執行SQL查詢語句所需要的參數,參數必須以它們在SQL語句中的順序為准</param> 
        /// <returns></returns> 
        public DataTable ExecuteDataTable(string sql, OleDbParameter[] parameters)
        {
            try
            {
                using (OleDbCommand Command = new OleDbCommand(sql, connection))
                {
                    if (parameters != null)
                    {
                        Command.Parameters.AddRange(parameters);
                    }
                    OleDbDataAdapter adapter = new OleDbDataAdapter(Command);
                    DataTable dataTable = new DataTable();
                    adapter.Fill(dataTable);
                    return dataTable;
                }
            }
            catch (OleDbException ex)
            {
                return null;
            }
        }

        /// <summary> 
        /// 對Access數據庫執行增刪改操作,返回受影響的行數。 
        /// </summary> 
        /// <param name="sql">要執行的增刪改的SQL語句</param> 
        /// <param name="parameters">執行增刪改語句所需要的參數,參數必須以它們在SQL語句中的順序為准</param> 
        /// <returns></returns> 
        public int ExecuteNonQuery(string sql, OleDbParameter[] parameters)
        {
            int affectRows = 0;

            try
            {
                using (OleDbTransaction Transaction = connection.BeginTransaction())
                {
                    using (OleDbCommand Command = new OleDbCommand(sql, connection, Transaction))
                    {
                        if (parameters != null)
                        {
                            Command.Parameters.AddRange(parameters);
                        }
                        affectRows = Command.ExecuteNonQuery();
                    }
                    Transaction.Commit();
                }
            }
            catch (OleDbException ex)
            {
                affectRows = -1;
            }
            return affectRows;
        }

        //收縮數據庫 VACUUM 
        public bool Vacuum()
        {
            try
            {
                using (OleDbCommand Command = new OleDbCommand("VACUUM", connection))
                {
                    Command.ExecuteNonQuery();
                }
                return true;
            }
            catch (OleDbException ex)
            {
                return false;
            }

        }

        public void BeginTransaction()
        {
            try
            {
                transaction = connection.BeginTransaction();
            }
            catch (OleDbException ex)
            { 
            
            }
        }

        public void CommitTransaction()
        {
            try
            {
                transaction.Commit();
            }
            catch (OleDbException ex)
            {

            }
        }

        public void RollbackTransaction()
        {
            try
            {
                transaction.Rollback();
            }
            catch (OleDbException ex)
            {

            }
        }
    }
}

 

調用示例:

AccessHelper helper = new AccessHelper("D:\\myaccess.mdb","123456789");     //連接到D盤下的myaccess.mdb數據庫,密碼為123456789
helper.Connect();
string select_sql = "select * from student"; //查詢的SQL語句 DataTable dt = helper.ExecuteDataTable(select_sql, null); //執行查詢操作,結果存放在dt中 //向數據庫中student表中插入了一條(name = "馬兆瑞",sex = "男",telephone = "15550000000")的記錄 string insert_sql = "insert into student(name,sex,telephone) values(?,?,?)"; //插入的SQL語句(帶參數) OleDbParameter[] para = new OleDbParameter[3]; //構造並綁定參數 string[] tag = { "name", "sex", "telephone" }; string[] value = { "馬兆瑞","","15550000000"}; for (int i = 0; i < 3; i++) { para[i] = new OleDbParameter(tag[i], value[i]); } int ret = helper.ExecuteNonQuery(insert_sql, para); //執行插入操作

 

本人是IT菜鳥,代碼有很多不足之處,望大家多多指教


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM