机房重构系列——ADO.NET访问数据库

一、概念

①、什么是ADO.NET

是一组用于和数据源进行交互地面向对象类库,可以处理数据源是多样的
机房重构系列——ADO.NET访问数据库

②、ADO.NET与ADO的关系?

ADO使用的是OLE DB接口并基于微软的COM技术,而ADO.NET有自己的ADO.NET接口并基于微软的.NET体系架构

二、ADO.NET的核心组成

System.Data命名空间提供了不同的ADO.NET类,包含了两组重要的类:一组负责处理软件内部的实际数据(DataSet),一组负责与外部数据系统通信(Data Provider)
机房重构系列——ADO.NET访问数据库

①System.Data  → DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint,DataColumnMapping,DataTableMapping
②System.Data.Coummon     → 各种数据访问类的基类和接口
③System.Data.SqlClient   → 对Sql Server进行操作的数据访问类
  主要有:   a) SqlConnection            → 数据库连接器
            b) SqlCommand               → 数据库命名对象
            c) SqlCommandBuilder        → 生存SQL命令
            d) SqlDataReader            → 数据读取器
            e) SqlDataAdapter           → 数据适配器,填充DataSet
            f) SqlParameter             → 为存储过程定义参数
            g) SqlTransaction           → 数据库事物

三、Connection连接对象

Connection对象数据库连接对象,功能就是负责对数据源的连接

3.1连接字符串

基本语法:数据源(Data Source)+数据库名称(Initial Catalog)+用户名(User ID)+密码(Password)

3.1.1、SQL Server连接字符串

标准安全连接
Data Source=;Initial Catalog=myDataBase;Userid=myUsername;Password=myPassword: 或者
Server=myServerAddress;Database=myDataBase;Userid=myUsername;Password=myPassword;Trusted_Connection=False;
可信连接:
Data Source =myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;或者
Server=myServerAddress;Database=myDatabase;Trusted_Connection=True;

3.2、连接到数据库

Connection对象有两个重要的属性:
(1)ConnectionString:表示用于打开SQL Server数据库的字符串
(2)State:表示Connection的状态,有Closed和OPen两种状态
Connection对象有两个重要的方法:
(1)Open()方法:指示打开数据库;
(2)Close()方法:指示关闭数据库

//创建连接对象1
using (SqlConnection conn1 = new SqlConnection("连接字符串"))    
{        
    conn1.Open();       
}

四、Command对象

数据库命令对象,Command对象主要执行包括添加、删除、修改、查询数据的操作命令。也可以用来执行存储过程。用于执行存储过程时需要将Command对象的CommandType属性设置为CommandType.StoredProcedure,默认情况下CommandType属性为CommandType.Text,表示执行的是普通SQL语句。
Command主要有三个方法:
4.1、ExecuteNonQuery
ExecuteNonQuery():执行一个SQL语句,返回受影响的行数,这个方法主要用于执行对数据库增加、更新、删除操作、注意查询的时候不是调用这个方法。用于完成insert、delete、update操作。

//新增
        private void btnAdd_Click(object sender, EventArgs e)
        {
            //创建连接对象,并使用using释放(关闭),连接用完后会被自动关闭
             using (SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=sa;database=MyCar"))
            {
                 //打开连接
                conn.Open();
                 //将执行的sql
                String sql = "INSERT INTO Car([Title] ,[Speed] ,[Info]) VALUES('奇瑞' ,190,'国产轿车')";
                 //创建命令对象,指定要执行sql语句与连接对象conn
                SqlCommand cmd = new SqlCommand(sql,conn);
                 //执行,返回影响行数
                int rows=cmd.ExecuteNonQuery();
                if (rows > 0) MessageBox.Show("新增成功!");
            }

            //using 相当如下代码,确保连接对象一定会关闭
            //SqlConnection conn=null;
            //try
            //{
            //    conn=new SqlConnection("server=.;uid=sa;pwd=sa;database=MyCar");
            //}
            //finally
            //{
            //    conn.Close();
            //}
        }

五、ExecuteReader获得数据

ExecuteReader用于实现只进只读的高效查询
ExcuteReader:返回一个sqlDataReader对象,可以通过这个对象来检查查询结果,从结果中取一行之后移动到零一行,同时此方法也返回一个Bool值,表明下一行是否可用,返回True则可用,返回False则到达结果集末尾

5.1、使用ExecuteReader实现数据查询
//查询
        private void btnQuery_Click(object sender, EventArgs e)
        {
            //创建连接对象,并使用using释放(关闭),连接用完后会被自动关闭
            using (SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=sa;database=MyCar"))
            {
                //打开连接
                conn.Open();
                //将执行的sql
                String sql = "select Id,Title,Speed,Info from Car";
                //创建命令对象,指定要执行sql语句与连接对象conn
                SqlCommand cmd = new SqlCommand(sql, conn);
                //执行查询返回结果集
                SqlDataReader sdr = cmd.ExecuteReader();
                //下移游标,读取一行,如果没有数据了则返回false
                while (sdr.Read())
                {
                    Console.WriteLine("编号:" + sdr["Id"] + ",车名:" + sdr["Title"] + ",速度:" + sdr["Speed"]);
                }
            }
        }

博客有待完善

上一篇:SQL Server数据库 857万条数据导入用时4分钟。【数据库访问类】


下一篇:C# WebAPI完成iOS支付验证