1. Xây Dựng Hàm Dùng Chung Để Kết Nối CSDL
- Vào C# Xây Dựng Class Dataprovider.cs
public partial class Dataprovider : DataTable
{
// Khai báo tham số
// Khai báo tham số
private static SqlConnection conn = null;
private static string str_conn = "";
private SqlCommand _cmd;
// Hàm trả về đối tượng lệnh
public SqlCommand Cmd
{
get { return _cmd; }
set { _cmd = value; }
}
SqlDataAdapter _adapter;
// Hàm dựng không đối số
// Hàm dựng không đối số
public Dataprovider()
{
config_xml.docfile_xml();
str_conn = config_xml._str_conn;
open_cnn();
}
// Hàm mở kết nối đến hệ thống
// Hàm mở kết nối đến hệ thống
public static bool open_cnn()
{
try
{
conn = new SqlConnection(str_conn);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
return true;
}
catch (Exception ex)
{
throw ex;
return false;
}
}
// Hàm để lấy danh sách dữ liệu
public DatatableLoad(SqlCommand cmd)
{
_cmd = cmd;
try
{
open_cnn();
_cmd.Connection = conn;
_adapter = new SqlDataAdapter();
_adapter.SelectCommand = _cmd;
this.Clear();
_adapter.Fill(this);
}
catch (Exception ex)
{
throw ex;
}
}
//Hàm đóng kết nối
public void CloseConn()
{
conn.Close();
SqlConnection.ClearPool(conn);
conn.Dispose();
}
// Hàm thực thi câu lệnh insert, update
public int ExecuteNoneQuery()
{
int kq = 0;
SqlTransaction sqltr = null;
try
{
sqltr = conn.BeginTransaction();//bat dau qua trinh quan ly transaction
_cmd.Connection = conn;
_cmd.Transaction = sqltr; //gan transaction vao doi tuong cmd
_adapter = new SqlDataAdapter();
_adapter.SelectCommand = _cmd;
SqlCommandBuilder builder = new SqlCommandBuilder(_adapter);
kq = _adapter.Update(this);
sqltr.Commit();//cam ket thuc hien thanh cong
}
catch (Exception)
{
if (sqltr != null)
sqltr.Rollback();//quay lui
}
return kq;
}
//Hàm thực thi câu lệnh insert,update
public int ExecuteNonQuery(SqlCommand cmd)
{
int kq = 0;
SqlTransaction sqltr = null;
try
{
sqltr = conn.BeginTransaction();
cmd.Connection = conn;
cmd.Transaction = sqltr;
kq = cmd.ExecuteNonQuery();
this.AcceptChanges();
sqltr.Commit();
}
catch (Exception ex)
{
if (sqltr != null)
sqltr.Rollback();
throw ex;
}
return kq;
}
// Hàm trả về biến
public object ExecuteScalar(SqlCommand cmd)
{
object kq = null;
SqlTransaction sqltr = null;
try
{
sqltr = conn.BeginTransaction();//bat dau quan ly transaction
cmd.Connection = conn;
cmd.Transaction = sqltr;
kq = cmd.ExecuteScalar();
{ }
this.AcceptChanges();
sqltr.Commit();
if (kq == DBNull.Value)
kq = null;
}
catch (Exception ex)
{
if (sqltr != null)
sqltr.Rollback();
throw ex;
}
return kq;
}
//ham chen vao csdl
public bool insert(SqlCommand cmd)
{
if (conn == null || conn.State == ConnectionState.Closed)
{
conn = new SqlConnection();
conn.Open();
}
_cmd = cmd;
_cmd.Connection = conn;
try
{
_cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
return false;
throw ex;
}
return true;
}
//ham update
public void update()
{
SqlCommandBuilder builder = new SqlCommandBuilder(_adapter);
_adapter.Update(this);
}
//ham ket attach csdl
//HAM LAY MA ID ke tiep
public SqlDataReader ExeCutereader(SqlCommand cmd)
{
SqlDataReader reader = null;
if (conn == null || conn.State == ConnectionState.Closed)
{
conn = new SqlConnection();
conn.Open();
}
_cmd = cmd;
_cmd.Connection = conn;
try
{
reader = _cmd.ExecuteReader();
}
catch (SqlException ex)
{
throw ex;
}
//reader.Close();
//reader.Dispose();
//_cmd.Dispose();
return reader;
}
}