asp.net使用ado連線資料庫
阿新 • • 發佈:2019-02-07
/// <summary>
/// 資料訪問操作類
/// chy710.cnblogs.com
/// </summary>
public class SqlDAO
{
//資料庫連線
private SqlConnection myConnection;
private SqlTransaction sqlTrans;
public SqlDAO()
{
myConnection = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());
}
#region 執行儲存過程
/// <summary>
/// 執行儲存過程
/// </summary>
/// <param name="procName">儲存過程名</param>
/// <param name="myPar">查詢引數</param>
/// <returns>int</returns>
public int RunProc(string procName, SqlParameter[] myPar)
{
try
{
myConnection.Open();
SqlCommand cmd = new SqlCommand(procName, myConnection);
cmd.CommandType = CommandType.StoredProcedure;
if (myPar != null)
{
foreach (SqlParameter spar in myPar)
{
cmd.Parameters.Add(spar);
}
}
cmd.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
cmd.ExecuteNonQuery();
return (int)cmd.Parameters["ReturnValue"].Value;
}
catch (Exception ex)
{
return -1;
}
finally
{
myConnection.Close();
}
}
#region 查詢 返回DataTable
/// <summary>
///
/// </summary>
/// <param name="procName"></param>
/// <param name="myPar"></param>
/// <returns></returns>
public DataTable RunProcGetData(string procName, SqlParameter[] myPar)
{
try
{
myConnection.Open();
SqlCommand cmd = new SqlCommand(procName, myConnection);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
if (myPar != null)
{
foreach (SqlParameter spar in myPar)
{
cmd.Parameters.Add(spar);
}
}
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
catch (Exception ex)
{
return null;
}
finally
{
myConnection.Close();
}
}
#endregion
#region 查詢 返回DataTable
/// <summary>
///
/// </summary>
/// <param name="procName">儲存過程名</param>
/// <param name="myPar">引數列表</param>
/// <param name="startRecord">起始記錄</param>
/// <param name="maxRecords">最大記錄</param>
/// <returns>資料表</returns>
public DataTable RunProcGetData(string procName, SqlParameter[] myPar, int startRecord, int maxRecords)
{
try
{
myConnection.Open();
SqlCommand cmd = new SqlCommand(procName, myConnection);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
if (myPar != null)
{
foreach (SqlParameter spar in myPar)
{
cmd.Parameters.Add(spar);
}
}
DataSet ds = new DataSet();
da.Fill(ds, startRecord, (maxRecords - startRecord + 1), "ReturnTable");
return ds.Tables["ReturnTable"];
}
catch (Exception ex)
{
return null;
}
finally
{
myConnection.Close();
}
}
#endregion
#endregion
#region 執行SQL語句
public int ExecuteSql(string strSql, SqlParameter[] myPar)
{
try
{
myConnection.Open();
SqlCommand cmd = new SqlCommand(strSql, myConnection);
if (myPar != null)
{
foreach (SqlParameter spar in myPar)
{
cmd.Parameters.Add(spar);
}
}
int result = cmd.ExecuteNonQuery();
return result;
}
catch(Exception ex)
{
return -1;
}
finally
{
myConnection.Close();
}
}
#region 查詢 返回DataTable
public DataTable GetDataTable(string strSql, SqlParameter[] myPar)
{
try
{
myConnection.Open();
SqlCommand cmd = new SqlCommand(strSql, myConnection);
SqlDataAdapter da = new SqlDataAdapter(cmd);
if (myPar != null)
{
foreach (SqlParameter spar in myPar)
{
cmd.Parameters.Add(spar);
}
}
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
catch
{
return null;
}
finally
{
myConnection.Close();
}
}
#endregion
#endregion
#region 帶事務的SQL語句 返回True OR False
/// <summary>
/// sql 語句事務
/// </summary>
/// <param name="listSqlPara">資料字典</param>
/// <returns>bool</returns>
public Boolean ExecuteTransation(Dictionary<string, SqlParameter[]> listSqlPara) //使用 傳入sql語句<BR>
{
myConnection.Open();
SqlCommand cmd = myConnection.CreateCommand();
cmd.Connection = myConnection;
SqlTransaction tx = myConnection.BeginTransaction();
cmd.Transaction = tx;
try
{
foreach (KeyValuePair<string, SqlParameter[]> item in listSqlPara)
{
cmd.CommandText = item.Key.ToString();
if (item.Value != null)
{
foreach (SqlParameter spar in item.Value)
{
cmd.Parameters.Add(spar);
}
}
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
tx.Commit();
}
catch
{
tx.Rollback();
return false;
}
finally
{
myConnection.Close();
}
return true;
}
#endregion
/// <summary>
/// 資料庫的開啟
/// </summary>
/// <returns>SqlConnection</returns>
public void ConnectionOpen()
{
if (myConnection.State == ConnectionState.Closed)
myConnection.Open();
}
/// <summary>
/// 資料庫的關閉
/// </summary>
public void ConnectionClose()
{
myConnection.Close();
}
/// <summary>
/// 事務的開始
/// </summary>
/// <param name="stx">SqlTransaction</param>
public void TransactionBegin()
{
sqlTrans = myConnection.BeginTransaction();
}
/// <summary>
/// 事務提交
/// </summary>
/// <param name="sqltrans">事務類</param>
public void TransactionCommit()
{
sqlTrans.Commit();
}
/// <summary>
/// 事務的回滾
/// </summary>
/// <param name="sqltrans">事務類</param>
public void TransactionRollback()
{
sqlTrans.Rollback();
}
/// <summary>
/// 需要手動開啟資料庫連線
/// </summary>
/// <param name="procName">引數過程名</param>
/// <param name="myPar">引數</param>
/// <returns>int</returns>
public int ExceturnProc(string procName, SqlParameter[] myPar)
{
try
{
SqlCommand cmd = new SqlCommand(procName, myConnection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Transaction = sqlTrans;
if (myPar != null)
{
foreach (SqlParameter spar in myPar)
{
cmd.Parameters.Add(spar);
}
}
cmd.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
cmd.ExecuteNonQuery();
return (int)cmd.Parameters["ReturnValue"].Value;
}
catch
{
return -1;
}
}
}
/// 資料訪問操作類
/// chy710.cnblogs.com
/// </summary>
public class SqlDAO
{
//資料庫連線
private SqlConnection myConnection;
private SqlTransaction sqlTrans;
public SqlDAO()
{
myConnection = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());
}
#region 執行儲存過程
/// <summary>
/// 執行儲存過程
/// </summary>
/// <param name="procName">儲存過程名</param>
/// <param name="myPar">查詢引數</param>
/// <returns>int</returns>
public int RunProc(string procName, SqlParameter[] myPar)
{
try
{
myConnection.Open();
SqlCommand cmd = new SqlCommand(procName, myConnection);
cmd.CommandType = CommandType.StoredProcedure;
if (myPar != null)
{
foreach (SqlParameter spar in myPar)
{
cmd.Parameters.Add(spar);
}
}
cmd.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
cmd.ExecuteNonQuery();
return (int)cmd.Parameters["ReturnValue"].Value;
}
catch (Exception ex)
{
return -1;
}
finally
{
myConnection.Close();
}
}
#region 查詢 返回DataTable
/// <summary>
///
/// </summary>
/// <param name="procName"></param>
/// <param name="myPar"></param>
/// <returns></returns>
public DataTable RunProcGetData(string procName, SqlParameter[] myPar)
{
try
{
myConnection.Open();
SqlCommand cmd = new SqlCommand(procName, myConnection);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
if (myPar != null)
{
foreach (SqlParameter spar in myPar)
{
cmd.Parameters.Add(spar);
}
}
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
catch (Exception ex)
{
return null;
}
finally
{
myConnection.Close();
}
}
#endregion
#region 查詢 返回DataTable
/// <summary>
///
/// </summary>
/// <param name="procName">儲存過程名</param>
/// <param name="myPar">引數列表</param>
/// <param name="startRecord">起始記錄</param>
/// <param name="maxRecords">最大記錄</param>
/// <returns>資料表</returns>
public DataTable RunProcGetData(string procName, SqlParameter[] myPar, int startRecord, int maxRecords)
{
try
{
myConnection.Open();
SqlCommand cmd = new SqlCommand(procName, myConnection);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
if (myPar != null)
{
foreach (SqlParameter spar in myPar)
{
cmd.Parameters.Add(spar);
}
}
DataSet ds = new DataSet();
da.Fill(ds, startRecord, (maxRecords - startRecord + 1), "ReturnTable");
return ds.Tables["ReturnTable"];
}
catch (Exception ex)
{
return null;
}
finally
{
myConnection.Close();
}
}
#endregion
#endregion
#region 執行SQL語句
public int ExecuteSql(string strSql, SqlParameter[] myPar)
{
try
{
myConnection.Open();
SqlCommand cmd = new SqlCommand(strSql, myConnection);
if (myPar != null)
{
foreach (SqlParameter spar in myPar)
{
cmd.Parameters.Add(spar);
}
}
int result = cmd.ExecuteNonQuery();
return result;
}
catch(Exception ex)
{
return -1;
}
finally
{
myConnection.Close();
}
}
#region 查詢 返回DataTable
public DataTable GetDataTable(string strSql, SqlParameter[] myPar)
{
try
{
myConnection.Open();
SqlCommand cmd = new SqlCommand(strSql, myConnection);
SqlDataAdapter da = new SqlDataAdapter(cmd);
if (myPar != null)
{
foreach (SqlParameter spar in myPar)
{
cmd.Parameters.Add(spar);
}
}
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
catch
{
return null;
}
finally
{
myConnection.Close();
}
}
#endregion
#endregion
#region 帶事務的SQL語句 返回True OR False
/// <summary>
/// sql 語句事務
/// </summary>
/// <param name="listSqlPara">資料字典</param>
/// <returns>bool</returns>
public Boolean ExecuteTransation(Dictionary<string, SqlParameter[]> listSqlPara) //使用 傳入sql語句<BR>
{
myConnection.Open();
SqlCommand cmd = myConnection.CreateCommand();
cmd.Connection = myConnection;
SqlTransaction tx = myConnection.BeginTransaction();
cmd.Transaction = tx;
try
{
foreach (KeyValuePair<string, SqlParameter[]> item in listSqlPara)
{
cmd.CommandText = item.Key.ToString();
if (item.Value != null)
{
foreach (SqlParameter spar in item.Value)
{
cmd.Parameters.Add(spar);
}
}
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
tx.Commit();
}
catch
{
tx.Rollback();
return false;
}
finally
{
myConnection.Close();
}
return true;
}
#endregion
/// <summary>
/// 資料庫的開啟
/// </summary>
/// <returns>SqlConnection</returns>
public void ConnectionOpen()
{
if (myConnection.State == ConnectionState.Closed)
myConnection.Open();
}
/// <summary>
/// 資料庫的關閉
/// </summary>
public void ConnectionClose()
{
myConnection.Close();
}
/// <summary>
/// 事務的開始
/// </summary>
/// <param name="stx">SqlTransaction</param>
public void TransactionBegin()
{
sqlTrans = myConnection.BeginTransaction();
}
/// <summary>
/// 事務提交
/// </summary>
/// <param name="sqltrans">事務類</param>
public void TransactionCommit()
{
sqlTrans.Commit();
}
/// <summary>
/// 事務的回滾
/// </summary>
/// <param name="sqltrans">事務類</param>
public void TransactionRollback()
{
sqlTrans.Rollback();
}
/// <summary>
/// 需要手動開啟資料庫連線
/// </summary>
/// <param name="procName">引數過程名</param>
/// <param name="myPar">引數</param>
/// <returns>int</returns>
public int ExceturnProc(string procName, SqlParameter[] myPar)
{
try
{
SqlCommand cmd = new SqlCommand(procName, myConnection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Transaction = sqlTrans;
if (myPar != null)
{
foreach (SqlParameter spar in myPar)
{
cmd.Parameters.Add(spar);
}
}
cmd.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
cmd.ExecuteNonQuery();
return (int)cmd.Parameters["ReturnValue"].Value;
}
catch
{
return -1;
}
}
}