淺談ASP.NET數據訪問層
作者:佚名
這里每個項目都要用到ASP.NET數據訪問層,我做的也不例外,但是我把數據訪問層做成獨立項目,沒有什么太大的目的,數據訪問層,僅僅做數據訪問用,不包含任何邏輯。
如果不使用ASP.NET數據訪問層,那么你的代碼里會出現很多SqlConnection、SqlCommand、SqlDataReader、Open、 Close……這些類和方法,而且代碼量很大,讓你不勝其煩,而且代碼寫起來,其實都是體力活,沒有技術含量。
每個項目都要用到ASP.NET數據訪問層,我做的也不例外,但是我把數據訪問層做成獨立項目,沒有什么太大的目的,數據訪問層,僅僅做數據訪問用,不包含任何邏輯。
以下是自己改進的ASP.NET數據訪問層,希望能得到更多人更好的改進建議,謝謝啦。
- usingSystem;
- usingSystem.Data;
- usingSystem.Data.SqlClient;
- usingSystem.Configuration;
- usingSystem.Web;
- usingSystem.Web.Security;
- usingSystem.Web.UI;
- usingSystem.Web.UI.WebControls;
- usingSystem.Web.UI.WebControls.WebParts;
- usingSystem.Web.UI.HtmlControls;
- usingSystem.Text;
- ///<summary>
- ///數據訪問層,數據庫操作類
- ///summary>
- publicclassDatabase
- {
- publicstaticstringConnectionStrings=ConfigurationManager.
ConnectionStrings["ConnectionStrings"].ConnectionString;- ///<summary>
- ///執行帶SqlParameter的sql語句,成功返回true,失敗返回false
- ///summary>
- ///<paramnameparamname="sql">sql語句param>
- ///<paramnameparamname="Param">SqlParameter[]參數列表param>
- ///<returns>returns>
- publicstaticintExecuteNonQuery(stringsql,paramsSqlParameter[]Param)
- //執行帶SqlParameter的sql語句,返回影響的行數
- {
- //HttpContext.Current.Response.Write(sql+"<br>");
- using(SqlConnectionconn=newSqlConnection(ConnectionStrings))
- {
- if(conn.State!=ConnectionState.Open)
- conn.Open();
- SqlTransactionTran=conn.BeginTransaction();//開始事務
- SqlCommandcmd=newSqlCommand(sql,conn,Tran);
- if(Param!=null)
- cmd.Parameters.AddRange(Param);
- try
- {
- intResult=cmd.ExecuteNonQuery();
- Tran.Commit();
- cmd.Parameters.Clear();
- returnResult;
- }
- catch(Exceptionerr)
- {
- HttpContext.Current.Response.Write(err.Message+"<br>"+err.StackTrace);
- Tran.Rollback();//回滾事務
- return0;
- }
- }
- }
- ///<summary>
- ///執行帶SqlParameter的sql,返回DataReader
- ///summary>
- ///<paramnameparamname="sql">sql語句param>
- ///<paramnameparamname="Param">SqlParameter[]參數列表param>
- ///<returns>返回SqlDataReaderreturns>
- publicstaticSqlDataReaderExecuteReader(stringsql,paramsSqlParameter[]Param)
- //執行帶SqlParameter的sql,返回DataReader
- {
- SqlConnectionconn=newSqlConnection(ConnectionStrings);
- SqlCommandcmd=newSqlCommand(sql,conn);
- if(Param!=null)
- cmd.Parameters.AddRange(Param);
- if(conn.State!=ConnectionState.Open)
- conn.Open();
- try
- {
- SqlDataReaderdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
- cmd.Parameters.Clear();
- returndr;
- }
- catch(Exceptionerr)
- {
- conn.Close();
- HttpContext.Current.Response.Write(err.Message+"<br>"+err.StackTrace);
- returnnull;
- }
- }
- ///<summary>
- ///執行帶SqlParameter的sql,返回DataTable
- ///summary>
- ///<paramnameparamname="sql">SQL語句param>
- ///<paramnameparamname="Param">SqlParameter[]參數列表param>
- publicstaticDataTableGetDataTable(stringsql,paramsSqlParameter[]Param)
- //執行帶SqlParameter的sql,返回DataTable
- {
- SqlConnectionconn=newSqlConnection(ConnectionStrings);
- DataTabledt=newDataTable();
- SqlDataAdapterda=newSqlDataAdapter(sql,conn);
- if(Param!=null)
- da.SelectCommand.Parameters.AddRange(Param);
- SqlCommandBuildercb=newSqlCommandBuilder(da);
- da.Fill(dt);
- conn.Close();
- //HttpContext.Current.Response.Write(sql+"<br>");
- returndt;
- }
- ///<summary>
- ///執行帶SqlParameter的sql,返回查詢結果***行***列的數據
- ///summary>
- ///<paramnameparamname="sql">SQL語句param>
- ///<paramnameparamname="Param">SqlParameter[]參數列表param>
- ///<returns>returns>
- publicstaticObjectExecuteScalar(stringsql,paramsSqlParameter[]Param)
- //執行帶SqlParameter的sql,返回查詢結果***行***列的數據
- {
- //HttpContext.Current.Response.Write(sql+"<br>");
- using(SqlConnectionconn=newSqlConnection(ConnectionStrings))
- {
- if(conn.State!=ConnectionState.Open)
- conn.Open();
- SqlTransactionTran=conn.BeginTransaction();
- SqlCommandcmd=newSqlCommand(sql,conn,Tran);
- if(Param!=null)
- cmd.Parameters.AddRange(Param);
- try
- {
- objectResult=cmd.ExecuteScalar();
- cmd.Parameters.Clear();
- Tran.Commit();
- returnResult;
- }
- catch(Exceptionerr)
- {
- HttpContext.Current.Response.Write(err.Message+"<br>"+err.StackTrace);
- Tran.Rollback();
- returnnull;
- }
- }
- }
- ///<summary>
- ///生成SqlParameter參數
- ///summary>
- ///<paramnameparamname="ParamName">參數名param>
- ///<paramnameparamname="paramType">參數類型param>
- ///<paramnameparamname="ParamValue">參數的值param>
- publicstaticSqlParameterGetParameter
(stringParamName,SqlDbTypeparamType,ObjectParamValue)- //生成SqlParameter參數
- {
- SqlParameterparam=newSqlParameter(ParamName,paramType);
- param.Value=ParamValue;
- returnparam;
- }
- }
【編輯推薦】
責任編輯:佚名
來源:
博客園