C#语言 SqlClient接口SQL Sever数据库类+OleDb接口Access数据库类
生活随笔
收集整理的這篇文章主要介紹了
C#语言 SqlClient接口SQL Sever数据库类+OleDb接口Access数据库类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有空再寫Oracle、IBM的吧。其實除了連接字符串格式,也只是換換數據庫接口名。
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;namespace IDataBase
{public class SQLServer{/// <summary>/// 數據庫連接字符串/// </summary>public string ConnectionString{get;set;}/// <summary>/// 上一次數據庫異常/// </summary>public string sqlException{get;set;}SqlConnection sqlConn;SqlCommand sqlCmd;SqlDataReader reader;DataSet ds;SqlCommandBuilder cmdBuilder;SqlDataAdapter adapter;/// <summary>/// 創建一個SQL數據庫實例,在設置ConnectionString屬性之前無法連接到數據庫/// </summary>public SQLServer(){}/// <summary>/// 用給定數據庫連接字符串創建SQL數據庫實例/// </summary>/// <param name="connectionString"></param>public SQLServer(string connectionString){ConnectionString = connectionString;sqlConn = new SqlConnection(ConnectionString);}/// <summary>/// 用SQL server身份驗證方式創建SQL數據庫實例,若不使用SQLserver2000應在server后加訪問端口“,2317”或“\SQLExpress”/// </summary>/// <param name="AttachDBFilename"></param>/// <param name="server"></param>/// <param name="DataBase"></param>/// <param name="uid"></param>/// <param name="pwd"></param>public SQLServer(string server ,string DataBase, string uid, string pwd, string AttachDBFilename = null){SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();if (AttachDBFilename != null){builder.AttachDBFilename = AttachDBFilename;}builder.DataSource = server;builder.InitialCatalog = DataBase;builder.UserID = uid;builder.Password = pwd;ConnectionString = builder.ConnectionString;sqlConn = new SqlConnection(ConnectionString);}/// <summary>/// 用SQL server身份驗證方式連接默認數據庫創建SQL數據庫實例,若不使用SQLserver2000應在server后加訪問端口“,2317”或“\SQLExpress”/// </summary>/// <param name="AttachDBFilename"></param>/// <param name="server"></param>/// <param name="uid"></param>/// <param name="pwd"></param>public SQLServer(string server, string uid, string pwd, string AttachDBFilename){SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();builder.AttachDBFilename = AttachDBFilename;builder.DataSource = server;builder.UserInstance = true;builder.UserID = uid;builder.Password = pwd;ConnectionString = builder.ConnectionString;sqlConn = new SqlConnection(ConnectionString);}/// <summary>/// 用windows身份驗證方式創建SQL數據庫實例,若不使用SQLserver2000應在server后加訪問端口“,2317”或“\SQLExpress”/// </summary>/// <param name="server"></param>/// <param name="DataBase"></param>/// <param name="AttachDBFilename"></param>public SQLServer(string server, string DataBase ,string AttachDBFilename = null){SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();if( AttachDBFilename != null ){builder.AttachDBFilename = AttachDBFilename;}builder.DataSource = server;builder.InitialCatalog = DataBase;builder.IntegratedSecurity = true;ConnectionString = builder.ConnectionString;sqlConn = new SqlConnection(ConnectionString);}/// <summary>/// 用windows身份驗證方式連接默認數據庫創建SQL數據庫實例,若不使用SQLserver2000應在server后加訪問端口“,2317”或“\SQLExpress”/// </summary>/// <param name="server"></param>/// <param name="AttachDBFilename"></param>public SQLServer(string server, string AttachDBFilename){SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();builder.AttachDBFilename = AttachDBFilename;builder.DataSource = server;builder.UserInstance = true;builder.IntegratedSecurity = true;ConnectionString = builder.ConnectionString;sqlConn = new SqlConnection(ConnectionString);}/// <summary>/// 使用SQL連接字符串編輯器完成連接字符串的微調,并用創建的連接字符串創建數據庫實例/// </summary>/// <param name="sqlConnStrBuilder"></param>public SQLServer(SqlConnectionStringBuilder sqlConnStrBuilder){ConnectionString = sqlConnStrBuilder.ConnectionString;sqlConn = new SqlConnection(ConnectionString);}/// <summary>/// 打開SQL數據庫連接/// </summary>/// <returns></returns>private bool openConnection(){try{sqlConn.Open();return true;}catch (Exception e){sqlException = e.ToString();return false;}}/// <summary>/// 關閉SQL數據庫連接/// </summary>private void closeConnection(){sqlConn.Close();}/// <summary>/// 執行SQL命令/// </summary>/// <param name="cmd"></param>private bool excuteCmd(){try{openConnection();sqlCmd.ExecuteNonQuery();closeConnection();return true;}catch (Exception e){sqlException = e.ToString();closeConnection();return false;}}/// <summary>/// 執行sql語句,成功返回true,失敗返回false/// </summary>/// <param name="cmd"></param>/// <returns></returns>public bool runSqlCmd(string cmd,sqlConn){sqlCmd = new SqlCommand(cmd);return excuteCmd();}/// <summary>/// 由用戶自行生成一條sql命令并執行/// </summary>/// <param name="cmd"></param>/// <returns></returns>public bool runSqlCmd(SqlCommand cmd){sqlCmd = cmd;return excuteCmd();}/// <summary>/// 按sql查詢語句獲得目標數據表的數據,返回DataTable。/// </summary>/// <param name="sqlQuery"></param>/// <returns></returns>public DataTable getDataTableBySQL(string sqlQuery){ds = new DataSet();adapter = new SqlDataAdapter(sqlQuery, sqlConn);cmdBuilder = new SqlCommandBuilder(adapter);openConnection();adapter.Fill(ds);closeConnection();return ds.Tables[0];}/// <summary>/// 獲得目標數據表的數據,返回DataTable。/// </summary>/// <param name="tableName"></param>/// <returns></returns>public DataTable getDataTableByName(string tableName){ds = new DataSet();adapter = new SqlDataAdapter("select * from "+tableName,sqlConn);cmdBuilder = new SqlCommandBuilder(adapter);openConnection();adapter.Fill(ds,tableName);closeConnection();return ds.Tables[tableName];}/// <summary>/// 將數據庫中指定的一或多個數據表填入DataSet并返回。/// </summary>/// <param name="sqlQuery"></param>/// <returns></returns>public DataSet getDataSet(string[] tableNameArray){ds = new DataSet();openConnection();foreach (string i in tableNameArray){adapter = new SqlDataAdapter("select * from "+i, sqlConn);cmdBuilder = new SqlCommandBuilder(adapter);adapter.Fill(ds,i);}closeConnection();return ds;}/// <summary>/// 執行帶1個參數的sql插入語句。sql語句中的參數名,與對應parameterName的值都請用“@para”的格式。成功返回true,失敗返回false。/// </summary>/// <param name="sql"></param>/// <param name="parameterName"></param>/// <param name="dbType"></param>/// <param name="value"></param>/// <returns></returns>public bool insert(string sql, string parameterName, SqlDbType dbType , int size, object value){try{openConnection();sqlCmd = new SqlCommand();sqlCmd.Parameters.Add(parameterName, dbType, size);sqlCmd.Parameters[parameterName].Value = value;sqlCmd.ExecuteNonQuery();closeConnection();return true;}catch (Exception e){sqlException = e.ToString();closeConnection();return false;}}/// <summary>/// 生成一個指定數據表的空數據列/// </summary>/// <param name="tableName"></param>/// <returns></returns>public DataRow creatDataRow(string tableName){ds = new DataSet();adapter = new SqlDataAdapter("select * from "+tableName, sqlConn);cmdBuilder = new SqlCommandBuilder(adapter);openConnection();adapter.Fill(ds, tableName);closeConnection();return ds.Tables[tableName].NewRow();}/// <summary>/// 向指定數據表插入數據列,空數據列可以用當前類的creatDataRow方法獲得。成功返回true,失敗返回false。/// </summary>/// <param name="tableName"></param>/// <param name="row"></param>/// <returns></returns>public bool insert(string tableName, DataRow row){try{ds = new DataSet();adapter = new SqlDataAdapter("select * from "+tableName, sqlConn);cmdBuilder = new SqlCommandBuilder(adapter);openConnection();adapter.Fill(ds, tableName);ds.Tables[tableName].Rows.Add(row.ItemArray);adapter.Update(ds, tableName);closeConnection();return true;}catch (Exception e){sqlException = e.ToString();closeConnection();return false;}}/// <summary>/// 執行帶1個參數的sql更新語句。sql語句中的參數名,與對應parameterName的值都請用“@para”的格式。成功返回true,失敗或沒找到指定行返回false。/// </summary>/// <param name="sql"></param>/// <param name="parameterName"></param>/// <param name="dbType"></param>/// <param name="size"></param>/// <param name="value"></param>/// <returns></returns>public bool update(string sql, string parameterName, SqlDbType dbType, int size, object value){try{openConnection();sqlCmd = new SqlCommand();sqlCmd.Parameters.Add(parameterName, dbType, size);sqlCmd.Parameters[parameterName].Value = value;if (sqlCmd.ExecuteNonQuery() == 0){closeConnection();return false;}closeConnection();return true;}catch (Exception e){sqlException = e.ToString();closeConnection();return false;}}/// <summary>/// 用當前類的getDataSet方法獲取指定數據表,修改后用本方法批量地更新指定數據表。成功返回true,失敗返回false。/// </summary>/// <param name="tableName"></param>/// <param name="dataSet"></param>/// <returns></returns>public bool update(string tableName, DataSet dataSet){try{adapter = new SqlDataAdapter("select * from "+tableName, sqlConn);cmdBuilder = new SqlCommandBuilder(adapter);openConnection();adapter.Update(dataSet);closeConnection();return true;}catch (Exception e){sqlException = e.ToString();closeConnection();return false;}}/// <summary>/// 返回指定數據表的指定列中是否存在指定值/// </summary>/// <param name="tableName"></param>/// <param name="columnName"></param>/// <param name="value"></param>/// <returns></returns>public bool existInTable(string tableName, string columnName, string value){sqlCmd = new SqlCommand("select * from "+tableName+" where "+columnName+"='"+value+"'",sqlConn);openConnection();reader = sqlCmd.ExecuteReader(CommandBehavior.SingleResult);bool exist = reader.HasRows;reader.Close();closeConnection();return exist;}/// <summary>/// 返回指定數據表的指定列中有多少個指定值/// </summary>/// <param name="tableName"></param>/// <param name="columnName"></param>/// <param name="value"></param>/// <returns></returns>public int countInTable(string tableName, string columnName, string value){sqlCmd = new SqlCommand("select count(*) from " + tableName + " where " + columnName + "='" + value + "'", sqlConn);openConnection();int count = (int)sqlCmd.ExecuteScalar();closeConnection();return count;}/// <summary>/// DataReader使用完畢必須用當前類的close方法將DataReader關閉,并關閉數據庫連接/// </summary>/// <param name="sql"></param>/// <returns></returns>public SqlDataReader select(string sql){sqlCmd = new SqlCommand(sql, sqlConn);openConnection();reader = sqlCmd.ExecuteReader();return reader;}/// <summary>/// 如果本類提供的DataReader未關閉,將其關閉,同時關閉未關閉的數據庫連接/// </summary>public void close(){if (!reader.IsClosed){reader.Close();}sqlConn.Close();}}public class Access{/// <summary>/// 數據庫連接字符串/// </summary>public string ConnectionString{get;set;}/// <summary>/// 上一次數據庫異常/// </summary>public string oleException{get;set;}OleDbConnection conn;OleDbCommand cmd;OleDbDataReader reader;DataSet ds;OleDbCommandBuilder cmdBuilder;OleDbDataAdapter adapter;/// <summary>/// 創建一個OleDb數據庫實例,在設置ConnectionString屬性之前無法連接到數據庫/// </summary>public Access(){ }/// <summary>/// 用給定數據庫連接字符串創建OleDb數據庫實例/// </summary>/// <param name="connectionString"></param>public Access(string connectionString){ConnectionString = connectionString;conn = new OleDbConnection(ConnectionString);}/// <summary>/// 用數據源提供程序和數據庫文件名進行簡易連接,數據庫文件在項目默認數據庫路徑下/// </summary>/// <param name="provider"></param>/// <param name="dataBase"></param>public Access(string provider, string dataBaseName){OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder();builder.Provider = provider;builder.DataSource = "|DataDirectory|"+dataBaseName;ConnectionString = builder.ConnectionString;conn = new OleDbConnection(ConnectionString);}/// <summary>/// 使用OleDb連接字符串編輯器完成連接字符串的微調,并用創建的連接字符串創建數據庫實例/// </summary>/// <param name="sqlConnStrBuilder"></param>public Access(OleDbConnectionStringBuilder oleConnStrBuilder){ConnectionString = oleConnStrBuilder.ConnectionString;conn = new OleDbConnection(ConnectionString);}/// <summary>/// 打開OleDb數據庫連接/// </summary>/// <returns></returns>private bool openConnection(){try{conn.Open();return true;}catch (Exception e){oleException = e.ToString();return false;}}/// <summary>/// 關閉OleDb數據庫連接/// </summary>private void closeConnection(){conn.Close();}/// <summary>/// 執行SQL命令/// </summary>/// <param name="cmd"></param>private bool excuteCmd(){try{openConnection();cmd.ExecuteNonQuery();closeConnection();return true;}catch (Exception e){oleException = e.ToString();closeConnection();return false;}}/// <summary>/// 執行sql語句,成功返回true,失敗返回false/// </summary>/// <param name="cmd"></param>/// <returns></returns>public bool runSqlCmd(string _cmd){cmd = new OleDbCommand(_cmd,conn);return excuteCmd();}/// <summary>/// 由用戶自行生成一條sql命令并執行/// </summary>/// <param name="cmd"></param>/// <returns></returns>public bool runSqlCmd(OleDbCommand _cmd){cmd = _cmd;return excuteCmd();}/// <summary>/// 按sql查詢語句獲得目標數據表的數據,返回DataTable。/// </summary>/// <param name="sqlQuery"></param>/// <returns></returns>public DataTable getDataTableBySQL(string sqlQuery){ds = new DataSet();adapter = new OleDbDataAdapter(sqlQuery, conn);cmdBuilder = new OleDbCommandBuilder(adapter);openConnection();adapter.Fill(ds);closeConnection();return ds.Tables[0];}/// <summary>/// 獲得目標數據表的數據,返回DataTable。/// </summary>/// <param name="tableName"></param>/// <returns></returns>public DataTable getDataTableByName(string tableName){ds = new DataSet();adapter = new OleDbDataAdapter("select * from " + tableName, conn);cmdBuilder = new OleDbCommandBuilder(adapter);openConnection();adapter.Fill(ds, tableName);closeConnection();return ds.Tables[tableName];}/// <summary>/// 將數據庫中指定的一或多個數據表填入DataSet并返回。/// </summary>/// <param name="sqlQuery"></param>/// <returns></returns>public DataSet getDataSet(string[] tableNameArray){ds = new DataSet();openConnection();foreach (string i in tableNameArray){adapter = new OleDbDataAdapter("select * from " + i, conn);cmdBuilder = new OleDbCommandBuilder(adapter);adapter.Fill(ds, i);}closeConnection();return ds;}/// <summary>/// 執行帶1個參數的sql插入語句。sql語句中的參數名,與對應parameterName的值都請用“@para”的格式。成功返回true,失敗返回false。/// </summary>/// <param name="sql"></param>/// <param name="parameterName"></param>/// <param name="dbType"></param>/// <param name="value"></param>/// <returns></returns>public bool insert(string sql, string parameterName, OleDbType dbType, int size, object value){try{openConnection();cmd = new OleDbCommand();cmd.Parameters.Add(parameterName, dbType, size);cmd.Parameters[parameterName].Value = value;cmd.ExecuteNonQuery();closeConnection();return true;}catch (Exception e){oleException = e.ToString();closeConnection();return false;}}/// <summary>/// 生成一個指定數據表的空數據列/// </summary>/// <param name="tableName"></param>/// <returns></returns>public DataRow creatDataRow(string tableName){ds = new DataSet();adapter = new OleDbDataAdapter("select * from " + tableName, conn);cmdBuilder = new OleDbCommandBuilder(adapter);openConnection();adapter.Fill(ds, tableName);closeConnection();return ds.Tables[tableName].NewRow();}/// <summary>/// 向指定數據表插入數據列,空數據列可以用當前類的creatDataRow方法獲得。成功返回true,失敗返回false。/// </summary>/// <param name="tableName"></param>/// <param name="row"></param>/// <returns></returns>public bool insert(string tableName, DataRow row){try{ds = new DataSet();adapter = new OleDbDataAdapter("select * from " + tableName, conn);cmdBuilder = new OleDbCommandBuilder(adapter);openConnection();adapter.Fill(ds, tableName);ds.Tables[tableName].Rows.Add(row.ItemArray);adapter.Update(ds, tableName);closeConnection();return true;}catch (Exception e){oleException = e.ToString();closeConnection();return false;}}/// <summary>/// 執行帶1個參數的sql更新語句。sql語句中的參數名,與對應parameterName的值都請用“@para”的格式。成功返回true,失敗或沒找到指定行返回false。/// </summary>/// <param name="sql"></param>/// <param name="parameterName"></param>/// <param name="dbType"></param>/// <param name="size"></param>/// <param name="value"></param>/// <returns></returns>public bool update(string sql, string parameterName, OleDbType dbType, int size, object value){try{openConnection();cmd = new OleDbCommand();cmd.Parameters.Add(parameterName, dbType, size);cmd.Parameters[parameterName].Value = value;if (cmd.ExecuteNonQuery() == 0){closeConnection();return false;}closeConnection();return true;}catch (Exception e){oleException = e.ToString();closeConnection();return false;}}/// <summary>/// 用當前類的getDataSet方法獲取指定數據表,修改后用本方法批量地更新指定數據表。成功返回true,失敗返回false。/// </summary>/// <param name="tableName"></param>/// <param name="dataSet"></param>/// <returns></returns>public bool update(string tableName, DataSet dataSet){try{adapter = new OleDbDataAdapter("select * from " + tableName, conn);cmdBuilder = new OleDbCommandBuilder(adapter);openConnection();adapter.Update(dataSet);closeConnection();return true;}catch (Exception e){oleException = e.ToString();closeConnection();return false;}}/// <summary>/// 返回指定數據表的指定列中是否存在指定值/// </summary>/// <param name="tableName"></param>/// <param name="columnName"></param>/// <param name="value"></param>/// <returns></returns>public bool existInTable(string tableName, string columnName, string value){cmd = new OleDbCommand("select * from " + tableName + " where " + columnName + "='" + value + "'", conn);openConnection();reader = cmd.ExecuteReader(CommandBehavior.SingleResult);bool exist = reader.HasRows;reader.Close();closeConnection();return exist;}/// <summary>/// 返回指定數據表的指定列中有多少個指定值/// </summary>/// <param name="tableName"></param>/// <param name="columnName"></param>/// <param name="value"></param>/// <returns></returns>public int countInTable(string tableName, string columnName, string value){cmd = new OleDbCommand("select count(*) from " + tableName + " where " + columnName + "='" + value + "'", conn);openConnection();int count = (int)cmd.ExecuteScalar();closeConnection();return count;}/// <summary>/// DataReader使用完畢必須用當前類的close方法將DataReader關閉,并關閉數據庫連接/// </summary>/// <param name="sql"></param>/// <returns></returns>public OleDbDataReader select(string sql){cmd = new OleDbCommand(sql, conn);openConnection();reader = cmd.ExecuteReader();return reader;}/// <summary>/// 如果本類提供的DataReader未關閉,將其關閉,同時關閉未關閉的數據庫連接/// </summary>public void close(){if (!reader.IsClosed){reader.Close();}conn.Close();}}
}
總結
以上是生活随笔為你收集整理的C#语言 SqlClient接口SQL Sever数据库类+OleDb接口Access数据库类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 启动bat文件--系统找不到指定路径
- 下一篇: C. Dominant Piranha(