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[];
}
}
}
/// <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 = ;
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[].Rows[][];
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 = ;
int pageindex = ;
int backcount = ;
DataSet ds= SqlHelper.LinkProce("T_TravelExpensive", "createtime",, ref pagesize, ref pageindex,out backcount,"");
Response.Write("all count:" + backcount.ToString()+ ";ds count:"+ds.Tables[].Rows.Count.ToString());
 
 
 

ADO.Net和SqlHelper封装的更多相关文章

  1. Asp.Net Core 2.0 项目实战(4)ADO.NET操作数据库封装、 EF Core操作及实例

    Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...

  2. 使用Spring.net中对Ado.net的抽象封装来访问数据库

    使用Spring.net中对Ado.net的抽象封装来访问数据库     Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序.它提供了很多方面的功能,比如依赖注入 ...

  3. 基于ADO.NET的SqlHelper类

    1.使用Connection连接数据库的步骤: (1).添加命名空间 System.Data.SqlClient(注意:初学者经常会忘记) (2)定义连接字符串.连接SQL Server 数据库时: ...

  4. ADO.NET链接数据库封装方法

    /// <summary>        /// 获取一个表        /// </summary>        /// <param name="sql ...

  5. ADO.NET数据读取封装

    public class sqlserver { //private string sqlstr = System.ConfigurationManager.ConnectionStrings[&qu ...

  6. 以SqlHelper为例论面向对象中封装的使用(续)

    上文以SqlHelper为例说明了面向对象中封装的好处,但是上文只是简单封装,考虑下面代码的情况: public static Activate GetByCode(string code) { Li ...

  7. 以SqlHelper为例论面向对象中封装的使用

    引言: 在使用面向对象方法编写的程序中,会有一些工具类,如Utility,xxHelper等. 比如1)操作数据库的过程,一般步骤都是:1.准备数据库地址.表名等信息:2.建立连接:3.准备要执行sq ...

  8. ADO.Net总结

    ADO.NET简介 一.    ADO.NET的组成(ADO.NET是什么?能干什么)客户体验      ADO.NET就是一组类库可以让我们通过程序的方式访问数据库 ADO.NET主要包括5个对象, ...

  9. 关于SqlHelper的详解

    SqlHelper是一个基于.NET Framework的数据库操作组件.组件中包含数据库操作方法.SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlComma ...

随机推荐

  1. 【00NOIP普及组】计算器的改良(信息学奥赛一本通 1910)(洛谷 1022)

    [题目描述] NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了一个刚进入的新手ZL先 ...

  2. linux常用命令--实用小技巧

    >查看端口是否被启动--netstat 命令:netstat -an | grep 4445结果:如果有tcp一行则代表端口是开放的,如果没有说明没有访问权限,端口未开放 一般的,在服务器上端口 ...

  3. 现有某电商网站用户对商品的收藏数据,记录了用户收藏的商品id以及收藏日期,名为buyer_favorite1。 buyer_favorite1包含:买家id,商品id,收藏日期这三个字段,数据以“\t”分割

    实验内容(mapReduce安装请按照林子雨教程http://dblab.xmu.edu.cn/blog/631-2/) 现有某电商网站用户对商品的收藏数据,记录了用户收藏的商品id以及收藏日期,名为 ...

  4. ELK:使用docker搭建elk平台

    1.安装ElasticSearch 1.docker pull elasticsearch //拉取镜像 2.find /var/lib/docker/overlay2/ -name jvm.opti ...

  5. 微信小程序 wxs的简单应用

    Demo地址:微信小程序wxs的简单应用 案例分析 张三.李四.王五,各自分别都有数量不等的车,现在需要列表显示名字及他们拥有车的数量, list数据结构如下,当我们使用wx:for进行显示时,发现个 ...

  6. fluent加载第三方(C++,Fortan等)动态链接库

    这里我介绍一种比较简单的方法,首先我们从ANSYS Fluent UDF Manual上随便找一段正确的UDF,下面这段UDF取自ANSYS 18的ANSYS Fluent UDF Manual,位于 ...

  7. 用DLL方式封装MDI子窗体

    用DLL方式封装MDI子窗体是一种常用的软件研发技术,他的长处: 研发人员能够负责某一个模块的编写包括(界面+逻辑),能够互不干扰,模块研发完成后,主程式统一调用. 易于程式升级,当程式升级时,不用编 ...

  8. 【软工实践】Beta冲刺(5/5)

    链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 将数据分析以可视化形式展示出来 新增数据分析展示等功能API 服务器后端部署, ...

  9. 001 okhttp3的POST使用

    继续使用上面的项目 1.被调用的项目 package com.jun.web2forokhttp.okhttp; import com.jun.web2forokhttp.bean.HttpDomai ...

  10. 009 SpringBoot+Swagger的使用

    一:概述 1.说明 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务. 总体目标是使客户端和文件系统作为服务器以同样的速度来更新. 文件的方法 ...