1. 程式人生 > >C#的access操作工具類

C#的access操作工具類

C# access 操作工具類

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

namespace www.xinduofen.com
{
class AccessOperateTool
{
private static String appBaseDirectory = AppDomain.CurrentDomain.BaseDirectory;//應用程序安裝基目錄


private static string catalog = appBaseDirectory + "resources\\accessDb\\";//所有數據源所在目錄
private const string data_password = "lgq";//數據庫的密碼

/// <summary>
/// 獲取數據庫連接對象
/// </summary>
/// <param name="dbFile">傳入的數據庫名(無需帶有後綴名".mdb")</param>

/// <returns>返回值為null代表獲取連接失敗</returns>
public static OleDbConnection getConnection(string dbFile)
{
OleDbConnection db_connection = null;
if (string.IsNullOrEmpty(dbFile))//如果傳入的參數異常
{
return null;
}


db_connection = new OleDbConnection("provider=microsoft.jet.oledb.4.0; Data Source="
+ catalog + dbFile + ".mdb;" + "Jet OLEDB:Database Password=" + data_password);
try
{
db_connection.Open();
}
catch (InvalidOperationException)//如果連接已經打開
{
Console.WriteLine("連接已經打開");
}
catch (OleDbException)//如果數據庫文件丟失或者被其他程序占用或者是連接超時
{
db_connection = new OleDbConnection("provider=microsoft.jet.oledb.4.0; Data Source="
+ catalog + dbFile + ".mdb;" + "Jet OLEDB:Database Password=" + data_password);//假設是連接超時

try
{
db_connection.Open();
}
catch (OleDbException)//如果不是連接超時,就是數據庫文件丟失或者被其他程序占用
{
Console.WriteLine("數據庫文件丟失或者被其他程序占用");
return null;//數據庫連接失敗,此語句必須含有
}
}

return db_connection;
}

/// <summary>
/// 創建一個事務,並且開始執行事務
/// </summary>
/// <param name="dbConnection">數據庫連接對象</param>
/// <returns>返回為null代表創建事務失敗</returns>
public static OleDbTransaction beginTransaction(OleDbConnection dbConnection)
{
OleDbTransaction transaction = null;
if (dbConnection == null)
{
return null;
}

try
{
transaction = dbConnection.BeginTransaction();//創建事務,並且開始執行事務
}
catch (Exception)
{
Console.WriteLine("創建事務時產生了異常!");
}

return transaction;
}

/// <summary>
/// 提交事務
/// </summary>
/// <param name="transaction">與一個事務相關的對象</param>
public static void transactionCommit(OleDbTransaction transaction)
{
try
{
//提交事務
transaction.Commit();
}
catch (Exception)
{
Console.WriteLine("提交事務時產生了異常!");
}

}

/// <summary>
/// 回滾事務
/// </summary>
/// <param name="transaction">與一個事務相關的對象</param>
public static void transactionRollback(OleDbTransaction transaction)
{
try
{
//回滾事務
transaction.Rollback();
}
catch (Exception)
{
Console.WriteLine("回滾事務時產生了異常!");
}
}

/// <summary>
/// 關閉數據庫的連接
/// </summary>
/// <param name="db_connection">數據庫連接對象</param>
public static void closeConnection(OleDbConnection db_connection)
{
if (db_connection != null)//如果連接不為空
{
if (db_connection.State == ConnectionState.Open)//如果連接處於打開狀態
db_connection.Close();

}

}

/// <summary>
/// 查詢單個信息
/// </summary>
/// <param name="sql">sql查詢語句</param>
/// <param name="db_connection">數據庫連接對象</param>
/// <param name="oleDbTransaction">數據庫連接事務對象</param>
/// <returns>
/// 如果返回值為空代表查詢失敗;
/// 此方法只能返回一個值,主要用於查行數,等其他用途(傳入的參數均不能為空);
/// 返回 Object 類型的數據,執行查詢,並返回查詢所返回的結果集中第一行的第一列。忽略其他列或行;
/// </returns>
public static Object dataSingle(string sql, OleDbConnection db_connection, OleDbTransaction oleDbTransaction)
{
Object result = null;
if (string.IsNullOrEmpty(sql) || db_connection == null)//如果傳入參數不合法
{
return null;
}


try
{
OleDbCommand db_command = db_connection.CreateCommand();//創建數據庫執行命令語句對象
if (oleDbTransaction!=null)
{
db_command.Transaction = oleDbTransaction;
}
db_command.CommandText = sql;//執行相關的sql語句
result = db_command.ExecuteScalar();//此命令只會返回一個值
}
catch (Exception)//如果sql命令執行失敗
{
Console.WriteLine("sql查詢語句不合法或者數據庫連接對象異常");
}


return result;//返回讀到的值
}

/// <summary>
/// 執行sql語句
/// </summary>
/// <param name="sql">sql執行語句</param>
/// <param name="db_connection">數據庫連接對象</param>
/// <param name="oleDbTransaction">數據庫連接事務對象</param>
/// <returns>
/// 返回值為0代表sql命令執行後對數據庫無任何影響,如果返回值大於0代表sql命令執行後對數據庫產生了影響;
/// 此方法只能返回一個值(指令在數據庫影響的行數),主要用於執行 insert、delete、alter操作;
/// </returns>
public static int executeNonQuery(string sql, OleDbConnection db_connection, OleDbTransaction oleDbTransaction)
{
int resultCnt = 0;
if (string.IsNullOrEmpty(sql) || db_connection == null)//如果傳入參數不合法
{
return 0;
}


try
{
OleDbCommand db_command = db_connection.CreateCommand();//創建數據庫執行命令語句對象
if (oleDbTransaction!=null)
{
db_command.Transaction = oleDbTransaction;
}
db_command.CommandText = sql;//執行相關的sql語句
resultCnt = db_command.ExecuteNonQuery();//此命令無查詢功能
}
catch (Exception)//如果sql命令執行失敗
{
Console.WriteLine("sql查詢語句不合法或者數據庫連接對象異常");
}


return resultCnt;//返回影響的行數
}

/// <summary>
/// 查詢多行信息
/// </summary>
/// <param name="sql">sql查詢語句</param>
/// <param name="db_connection">數據庫連接對象</param>
/// <param name="oleDbTransaction">數據庫連接事務對象</param>
/// <returns>
/// 返回為null,代表查詢失敗,返回 OleDbDataReader 類型的數據,主要用於檢索多行值;
/// 此方法只能返回 OleDbDataReader 類型的數據,只能一行一行的讀數據;
/// </returns>
public static OleDbDataReader dataReader(string sql, OleDbConnection db_connection, OleDbTransaction oleDbTransaction)
{
OleDbDataReader data_read = null;
if (string.IsNullOrEmpty(sql) || db_connection == null)
{
return null;
}


try
{
OleDbCommand db_command = db_connection.CreateCommand();//創建數據庫執行命令語句對象
if (oleDbTransaction!=null)
{
db_command.Transaction = oleDbTransaction;
}
db_command.CommandText = sql;//執行相關的sql語句
data_read = db_command.ExecuteReader();//讀取數據庫中的數據
}
catch (Exception)//如果sql命令執行失敗
{
Console.WriteLine("sql查詢語句不合法或者數據庫連接對象異常");
}


return data_read;//返回讀到的數據
}

/// <summary>
/// 此方法是向傳入的 dataset 中填入數據,“不支持更新功能”
/// </summary>
/// <param name="sql">sql查詢語句</param>
/// <param name="dataset">用於存儲查詢信息的數據集緩存區</param>
/// <param name="table_name">是dataset要緩存查詢信息的DataTble名稱</param>
/// <param name="db_connection">數據庫連接對象</param>
/// <param name="oleDbTransaction">數據庫連接事務對象</param>
/// <returns>查詢成功返回true,失敗返回false</returns>
public static bool dataAdappterDataSet(string sql, DataSet dataset, string table_name
, OleDbConnection db_connection, OleDbTransaction oleDbTransaction)
{
//初始化為“查詢失敗”
bool result = false;
if (string.IsNullOrEmpty(sql) || dataset == null || string.IsNullOrEmpty(table_name) || db_connection == null)
{
return false;
}


try
{
//定義將數據庫的數據匹配到DataSet的適配器對象
OleDbDataAdapter data_adappter = new OleDbDataAdapter(sql, db_connection);
if (oleDbTransaction!=null)
{
data_adappter.SelectCommand.Transaction = oleDbTransaction;
}
data_adappter.Fill(dataset, table_name);

result = true;//查詢成功
}
catch (Exception)//如果sql命令執行失敗
{
Console.WriteLine("sql查詢語句不合法或者數據庫連接對象異常");
}


return result;//返回查詢結果
}

/// <summary>
/// 此方法是向傳入的 dataset 中填入數據,“支持更新功能”,執行更新之前不能斷開與數據庫的連接
/// </summary>
/// <param name="sql">sql查詢語句</param>
/// <param name="dataset">用於存儲查詢信息的數據集緩存區</param>
/// <param name="table_name">是dataset要緩存查詢信息的DataTble名稱</param>
/// <param name="db_connection">數據庫連接對象</param>
/// <param name="oleDbTransaction">數據庫連接事務對象</param>
/// <returns>返回一個 OleDbCommandBuilder 對象,可以用來進行更新操作,將內存dataset中改變的數據同步到數據庫中</returns>
public static OleDbCommandBuilder dataAdappterDataSetUpdate(string sql, DataSet dataset, string table_name
, OleDbConnection db_connection, OleDbTransaction oleDbTransaction)
{
OleDbCommandBuilder commandBuilder = null;
if (string.IsNullOrEmpty(sql) || dataset == null || string.IsNullOrEmpty(table_name) || db_connection == null)
{
return null;
}


try
{
//定義將數據庫的數據匹配到DataSet的適配器對象
OleDbDataAdapter data_adappter = new OleDbDataAdapter(sql, db_connection);
if (oleDbTransaction!=null)
{
data_adappter.SelectCommand.Transaction = oleDbTransaction;
}
OleDbCommandBuilder builder = new OleDbCommandBuilder(data_adappter);
data_adappter.Fill(dataset, table_name);

commandBuilder = builder;//查詢成功
}
catch (Exception)//如果sql命令執行失敗
{
Console.WriteLine("sql查詢語句不合法或者數據庫連接對象異常");
}


return commandBuilder;//返回查詢結果
}

}
}
內容來自:越康體育

C#的access操作工具類