1. 前言
在C#的程式設計中,如果要常常從資料庫擷取資料以及操作資料庫的新增、修改、刪除功能,需要撰寫一些冗長且重複的程式碼,因此將操作資料庫寫成簡單的方法,以下是此方法的程式。

2. 說明
以下舉出常用的資料庫包括MSSQL、MySQL與Oracle,首先加入命名空間。

using System.Data.SqlClient;
using MySql.Data.MySqlClient;
using System.Data.OracleClient;

MSSQL:

public static SqlConnection OpenSqlConn(string Server, string Database, string dbuid, string dbpwd)
{
	string cnstr = string.Format("server={0};database={1};uid={2};pwd={3};Connect Timeout = 180", Server, Database, dbuid, dbpwd);
	SqlConnection icn = new SqlConnection();
	icn.ConnectionString = cnstr;
	if (icn.State == ConnectionState.Open) icn.Close();
	icn.Open();
	return icn;
}

public static DataTable GetSqlDataTable(string Server, string Database, string dbuid, string dbpwd, string SqlString)
{
	DataTable myDataTable = new DataTable();
	SqlConnection icn = null;
	icn = OpenSqlConn(Server, Database, dbuid, dbpwd);
	SqlCommand isc = new SqlCommand();
	SqlDataAdapter da = new SqlDataAdapter(isc);
	isc.Connection = icn;
	isc.CommandText = SqlString;
	isc.CommandTimeout = 600;
	DataSet ds = new DataSet();
	ds.Clear();
	da.Fill(ds);
	myDataTable = ds.Tables[0];
	if (icn.State == ConnectionState.Open) icn.Close();
	return myDataTable;
}

public static void SqlInsertUpdateDelete(string Server, string Database, string dbuid, string dbpwd, string SqlSelectString)
{
	SqlConnection icn = OpenSqlConn(Server, Database, dbuid, dbpwd);
	SqlCommand cmd = new SqlCommand(SqlSelectString, icn);
	SqlTransaction mySqlTransaction = icn.BeginTransaction();
	try
	{
		cmd.Transaction = mySqlTransaction;
		cmd.ExecuteNonQuery();
		mySqlTransaction.Commit();
	}
	catch (Exception ex)
	{
		mySqlTransaction.Rollback();
		throw (ex);
	}
	if (icn.State == ConnectionState.Open) icn.Close();
}

 MySQL:

public static MySqlConnection MyOpenConn(string Server, string Database, string dbuid, string dbpwd)
{
	string cnstr = string.Format("server={0};database={1};uid={2};pwd={3};Connect Timeout = 180; CharSet=utf8", Server, Database, dbuid, dbpwd);
	MySqlConnection icn = new MySqlConnection();
	icn.ConnectionString = cnstr;
	if (icn.State == ConnectionState.Open) icn.Close();
	icn.Open();
	return icn;
}

public static DataTable GetMyDataTable(string Server, string Database, string dbuid, string dbpwd, string SqlString)
{
	DataTable myDataTable = new DataTable();
	MySqlConnection icn = null;
	icn = MyOpenConn(Server, Database, dbuid, dbpwd);
	MySqlCommand isc = new MySqlCommand();
	MySqlDataAdapter da = new MySqlDataAdapter(isc);
	isc.Connection = icn;
	isc.CommandText = SqlString;
	isc.CommandTimeout = 600;
	DataSet ds = new DataSet();
	ds.Clear();
	da.Fill(ds);
	myDataTable = ds.Tables[0];
	if (icn.State == ConnectionState.Open) icn.Close();
	return myDataTable;
}

public static void MySqlInsertUpdateDelete(string Server, string Database, string dbuid, string dbpwd, string SqlSelectString)
{
	MySqlConnection icn = MyOpenConn(Server, Database, dbuid, dbpwd);
	MySqlCommand cmd = new MySqlCommand(SqlSelectString, icn);
	MySqlTransaction mySqlTransaction = icn.BeginTransaction();
	try
	{
		cmd.Transaction = mySqlTransaction;
		cmd.ExecuteNonQuery();
		mySqlTransaction.Commit();
	}
	catch (Exception ex)
	{
		mySqlTransaction.Rollback();
		throw (ex);
	}
	if (icn.State == ConnectionState.Open) icn.Close();
}

Oracle:

public static OracleConnection OpenConn(string Server, string Database, string dbuid, string dbpwd)
{
	string cnstr = string.Format("server={0};Data Source={1};User ID={2};Password={3}", Server, Database, dbuid, dbpwd);
	OracleConnection icn = new OracleConnection();
	icn.ConnectionString = cnstr;
	if (icn.State == ConnectionState.Open) icn.Close();
	icn.Open();
	return icn;
}

public static DataTable GetDataTable(string Server, string Database, string dbuid, string dbpwd, string SqlString)
{
	DataTable myDataTable = new DataTable();
	OracleConnection icn = null;
	icn = OpenConn(Server, Database, dbuid, dbpwd);
	OracleCommand isc = new OracleCommand();
	OracleDataAdapter da = new OracleDataAdapter(isc);
	isc.Connection = icn;
	isc.CommandText = SqlString;
	isc.CommandTimeout = 600;
	DataSet ds = new DataSet();
	ds.Clear();
	da.Fill(ds);
	myDataTable = ds.Tables[0];
	if (icn.State == ConnectionState.Open) icn.Close();
	return myDataTable;
}

public static void OracleInsertUpdateDelete(string Server, string Database, string dbuid, string dbpwd, string SqlSelectString)
{
	OracleConnection icn = OpenConn(Server, Database, dbuid, dbpwd);
	OracleCommand cmd = new OracleCommand(SqlSelectString, icn);
	OracleTransaction mySqlTransaction = icn.BeginTransaction();
	try
	{
		cmd.Transaction = mySqlTransaction;
		cmd.ExecuteNonQuery();
		mySqlTransaction.Commit();
	}
	catch (Exception ex)
	{
		mySqlTransaction.Rollback();
		throw (ex);
	}
	if (icn.State == ConnectionState.Open) icn.Close();
}

 

3. 應用
這樣以後要取得DataTable只要寫下列程式碼(以Oracle為例)

string sql = "select * from TableName";
DataTable myDataTable = GetDataTable("ServerName","DataBaseName","UserName","PassWord",sql);

 

arrow
arrow
    文章標籤
    C# DataTable Database
    全站熱搜

    西夏普 發表在 痞客邦 留言(1) 人氣()