1.什么是ADO.Net
简单来讲,ADO.NET是用于和数据源打交道的.Net结束,是一组向.NET程序员公开数据访问服务的类
2.
ADO.NET的
组成部分和
对象模型
(1)ADO.NET的两个重要组成部分:.NET数据提供程序和数据集(DataSet)
(2)ADO.NET对象模型如下图:
3.数据库操作类的封装 SqlHelper
(1)Web.config 配置数据库连接字符串
<connectionStrings> <add name="Connectionstring" connectionString="Data Source=(local);Initial Catalog=**;Integrated Security=False;User ID=sa;Password=******" providerName="System.Data.SqlClient" /> </connectionStrings>
(2)封装sqlHelper类
public static class SqlHelper { //创建连接字符串 public static readonly string connStr = ConfigurationManager.ConnectionStrings["Connectionstring"].ConnectionString; /// <summary> /// 返回受影响的行数 用于执行Sql语句 /// </summary> /// <param name="sql"></param> /// <param name="parameter"></param> /// <returns></returns> public static int ExecNonQuery(string sql, SqlParameter[] parameter) { using (SqlConnection con = new SqlConnection(connStr)) { con.Open(); using (SqlCommand cmd = con.CreateCommand()) { cmd.CommandText = sql; if (parameter != null) { cmd.Parameters.AddRange(parameter); } return cmd.ExecuteNonQuery(); } } } /// <summary> /// 返回结果集DataSet /// </summary> /// <param name="sql"></param> /// <param name="parameter"></param> /// <returns></returns> public static DataSet ExecDataSet(string sql, SqlParameter[] parameter) { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; if (parameter != null) { cmd.Parameters.AddRange(parameter); } SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); adapter.Fill(ds); return ds; } } } /// <summary> /// 返回表 /// </summary> /// <param name="sql"></param> /// <param name="parameter"></param> /// <returns></returns> public static DataTable ExecDataTable(string sql, SqlParameter[] parameter) { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; if (parameter != null) { cmd.Parameters.AddRange(parameter); } SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); adapter.Fill(ds); return ds.Tables[0]; } } } /// <summary> /// 执行存储过程,返回影响的行数 /// </summary> /// <param name="storedProcName"></param> /// <param name="parameters"></param> /// <param name="connectionString"></param> /// <returns></returns> public static int RunProcedure(string storedProcName, SqlParameter[] parameters, string connStr) { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { //设置命令类型为存储过程 cmd.CommandType = CommandType.StoredProcedure; //设置存储过程名称 cmd.CommandText = storedProcName; if (parameters != null) { cmd.Parameters.AddRange(parameters); } //执行存储过程 return cmd.ExecuteNonQuery(); } } } public static DataSet LinkProce(string TableName, string OrderFieldName, int OrderType, ref int PageSize, ref int PageIndex, out int backAllCount, string strWhere) { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { backAllCount = 1; cmd.CommandText = "Proc_GetRecordByPage"; cmd.CommandType = CommandType.StoredProcedure; SqlParameter[] sqlParameters = new SqlParameter[] { new SqlParameter("tblName",TableName), new SqlParameter("orderFieldName",OrderFieldName), new SqlParameter("OrderType",OrderType), new SqlParameter("PageSize",PageSize), new SqlParameter("PageIndex",PageIndex), new SqlParameter("strWhere",strWhere), new SqlParameter("IsReCount",backAllCount), }; cmd.Parameters.AddRange(sqlParameters); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; DataSet ds = new DataSet(); try { da.Fill(ds); backAllCount = (int)ds.Tables[1].Rows[0][0]; return ds; } catch (Exception ex) { return null; } finally { ds.Dispose(); conn.Close(); } } } } /// <summary> /// 返回首行首列 /// </summary> /// <param name="sql"></param> /// <param name="parameter"></param> /// <returns></returns> public static object ExecuteScalar(string sql, SqlParameter[] parameter) { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; if (parameter != null) { cmd.Parameters.AddRange(parameter); } return cmd.ExecuteScalar(); } } } }
(3)SqlHelper调用
int pagesize = 15; int pageindex = 1; int backcount = 1; DataSet ds= SqlHelper.LinkProce("T_TravelExpensive", "createtime",0, ref pagesize, ref pageindex,out backcount,""); Response.Write("all count:" + backcount.ToString()+ ";ds count:"+ds.Tables[0].Rows.Count.ToString());