天天看點

幾個C#資料庫封裝類

由于SqlDataReader需要一個長效連接配接的原因,把它從CMySqlConnection中獨立了出來,感覺有些松散,另外也有點重複封裝的味道,不過實際使用中友善了許多,不用經常打開關閉資料庫,省了不少。

class CMySqlConnection //SqlConnection封裝類

{

private SqlConnection m_objConn;

//基于連接配接字元串建構對象

public CMySqlConnection(string strConnString)

{

m_objConn = new SqlConnection(strConnString);

}

//打開資料庫連接配接

private void Open()

{

Close();

m_objConn.Open();

}

//關閉資料庫連接配接

private void Close()

{

if(m_objConn.State == ConnectionState.Open)

m_objConn.Close();

}

//執行Sql語句(不傳回記錄集的)

private int ExecSql(string strSql)

{

int nRet = 0;

try

{

this.Open();

SqlCommand objSqlCommand = new SqlCommand(strSql, m_objConn);

nRet = objSqlCommand.ExecuteNonQuery();

this.Close();

}

catch (Exception objException)

{

MessageBox.Show("執行SQL語句時出錯,出錯資訊為:" + objException.ToString(), "錯誤");

}

return nRet; //傳回SQL語句執行後所影響的行數

}

//執行一個查詢操作

public DataSet doSelect(string strSql,string strTableName)

{

DataSet objDataSet = null;

SqlDataAdapter objDataAdapter = null;

try

{

this.Open();

objDataSet = new DataSet();

objDataAdapter = new SqlDataAdapter(strSql, m_objConn);

objDataAdapter.Fill(objDataSet, strTableName);

this.Close();

}

catch (Exception objException)

{

MessageBox.Show("執行SQL語句時出錯,出錯資訊為:" + objException.ToString(), "錯誤");

}

return objDataSet;

}

//執行一個插入操作

public int doInsert(string strSql)

{

return ExecSql(strSql);

}

//執行一個更新操作

public int doUpdate(string strSql)

{

return ExecSql(strSql);

}

//執行一個删除操作

public int doDelete(string strSql)

{

return ExecSql(strSql);

}

}

class CMySqlDataReader //SqlDataReader封裝類

{

private bool m_bIsSelfConn; //是否建立資料庫連接配接标志

private SqlConnection m_objConn; //資料庫連接配接對象

private SqlDataReader m_objSqlDataReader; //閱讀器對象

//建立一個資料庫連接配接建構對象

public CMySqlDataReader(string strConnString)

{

m_objConn = new SqlConnection(strConnString);

try

{

m_objConn.Open();

m_bIsSelfConn = true;

}

catch (Exception objException)

{

MessageBox.Show("打開資料庫連接配接時出錯,出錯資訊為:" + objException.ToString(), "錯誤");

}

}

//基于一個現存的資料庫連接配接對象(必須已打開)建構對象

public CMySqlDataReader(SqlConnection objConn)

{

if (objConn.State == ConnectionState.Open)

{

m_objConn = objConn;

m_bIsSelfConn = false;

}

else

{

throw new Exception("資料庫連接配接未打開!"); //如果連接配接未打開則抛出異常

}

}

//打開并獲得一個閱讀器

public SqlDataReader Open(string strSql)

{

SqlCommand objSqlCommand = null;

m_objSqlDataReader = null;

try

{

objSqlCommand = new SqlCommand(strSql, m_objConn);

m_objSqlDataReader = objSqlCommand.ExecuteReader();

}

catch (Exception objException)

{

MessageBox.Show("建立一個SqlDataReader時出錯,出錯資訊為:" + objException.ToString(), "錯誤");

}

return m_objSqlDataReader;

}

//關閉一個閱讀器

public void Close()

{

m_objSqlDataReader.Close();

if (m_bIsSelfConn) //如果資料庫連接配接為建立的,則關閉它

{

if (m_objConn.State == ConnectionState.Open)

m_objConn.Close();

}

}

}