首页 > 数据库技术 > 详细

SQL02——ADO.NET数据访问技术

时间:2019-10-06 20:40:29      阅读:80      评论:0      收藏:0      [点我收藏+]

1.学好ADO.NET课程的收获

  1.1掌握C#访问数据库的基本方法,如连接和断开数据库

  1.2掌握数据查询的各种方法,如增删改查

  1.3重点理解和掌握OOP原则在数据访问种的应用,如写通用读写类的意义

  1.4重点理解和掌握基于OOP查询与对象封装,查询使用的最多

2.MIS系统部署方案

  2.1完整的应用程序包括客户端和数据库服务端

    2.1.1安装了程序的客户端,C/S架构,可能有多个

    2.1.2数据库服务端,如SQLServer、Oracle、MySql

    2.1.3AQO.NET就是连接客户端和服务端的一种数据库访问技术

  2.2理解ADO.NET

    2.2.1AxtiveX  Data  Objects(ADO)

    2.2.2是.NET平台下应用程序和数据源进行交互的一组面向对象类库。这里的数据源不仅仅指数据库,可以能是excel、ini、txt等数据文件

    2.2.3简单理解就是——>>>数据访问组件

3.ADO.NET主要组件

主要由两部分组成

  3.1.NET数据提供程序:用于连接到数据库、执行命令和检索结果。

     主要有四大对象

    3.1.1Connection对象:负责连接数据库

    3.1.2Command对象:负责对数据源执行命令

    3.1.3DataReader对象:从数据源种读取只进且只读的数据流

    3.1.4DataAdapter对象:用数据源填充DataSet并解析更新

  3.2DataSet内存数据集

    DataSet:独立与任何数据源,不必直接和数据库交互

4..NET Framework数据提供程序

  访问不同数据库需要有不同的访问对象

  .NET Framework数据提供程序有以下

  SQL Server数据库——>>>System.Data.SqlClient

  Access、Excel或SQLServer数据源——>>>System.Data.OleDb

 5.连接数据库的准备工作

  需要SQLServer服务器端口查看与修改

  打开软件SQL Server配置管理器——>>>确保MSSQLSERVER协议的TCP/IP启用,确定好端口号(默认1433)

6.正确的连接服务器

  四个条件:服务器IP地址、数据库名称、登陆账号、登陆密码

  一个必要:ADO.NET组件

7.Conncetion对象

  7.1作用:建立应用程序和数据库的点与点连接

  7.2属性:ConnectionString(连接字符串)

    封装连接字符串的四个条件

    Server=服务器名称或IP地址;DataBase=数据库名称;User ID=登陆账号;PassWord=登陆密码

    使用SQLServer用户验证登陆的字符串示例(经常使用):Server=192.168.1.2;DataBase=StudentManageDB;Uid=xiaoyang;Pwd=pwd01!

    使用windows集成验证登录的字符串示例(仅限于本机):Data Source=.;Initial Catalog=StudentManageDB;Intergrated Security=True

string conString="Server=wxj\\SQLExpress;DataBase=StudentManageDB;Uid=xiaoYang;Pwd=pwd01!";
string conString=@"Server=wxj\SQLExpress;DataBase=StudentManageDB;Uid=xiaoYang;Pwd=pwd01!";

    【注意1】数据库命名实例要写完整

    【注意2】注意使用“\\”或者字符串前面加“@”。C#不识别单个的“\“

    【注意3】如果是默认实例,则可以用”.“或”localhost“代替服务器名称或ip地址

  7.3方法

    Open();   //打开连接

    Close();    //关闭连接

技术分享图片
//【1】引入命名空间
using System.Data;
using System.Data.SqlClient;
namespace _024ADONET
{
    class Program
    {
        static void Main(string[] args)
        {
            //【2】定义连接字符串
            string connectionString = "Server=.;DataBase=BOE1;Uid=sa;Pwd=222";
            //【3】创建连接对象
            SqlConnection conn = new SqlConnection(connectionString);
            //【4】打开连接
            conn.Open();
            if (conn.State==ConnectionState.Open)
            {
                Console.WriteLine("Connection is Opened!");
            }
            //【5】关闭连接
            conn.Close();
            if (conn.State==ConnectionState.Closed)
            {
                Console.WriteLine("Connection is Closed!");
            }
            Console.ReadLine();
        }
    }
}
SQL Connection连接字符串

 8.Command对象

  8.1作用:向数据库发送SQL语句

    封装“连接对象”和要执行的“SQL语句”

    对数据库执行具体的操作,提供“增、删、改、查”的方法

  8.2属性

    CommandText:需要封装的sql语句和存储过程名称

    Connection:Command对象使用的数据库连接对象

  8.3方法

    ExecuteNonQuery();  //执行增、删、改操作    【int型】

    ExecuteScalar();  //返回单一结果的查询          【object型】

    ExecuteReader();  //返回只读数据列表的查询   

  8.4ExecuteNonQuery()方法使用要点

    执行insert、update、delete类型的语句

    执行后返回受影响的行数,一般是大于0的整数,等于0说明没有影响,等于-1说明语法错误

  8.5C#调试SQL语句,可以打断点,可视化字符串,复制到SQL Server中

技术分享图片
 1 //【1】引入命名空间
 2 using System.Data;
 3 using System.Data.SqlClient;
 4 namespace _024ADONET
 5 {
 6     class Program
 7     {
 8         static void Main(string[] args)
 9         {
10             //【2】定义连接字符串
11             string connectionString = "Server=.;DataBase=StudentManageDB;Uid=sa;Pwd=1001";
12             //【3】创建连接对象
13             SqlConnection conn = new SqlConnection(connectionString);
14             //【4】打开连接
15             conn.Open();
16             if (conn.State==ConnectionState.Open)
17             {
18                 Console.WriteLine("Connection is Opened!");
19             }
20             //cmd对象
21             SqlCommand cmd = new SqlCommand();
22             cmd.Connection = conn;
23             //执行【插入一条语句】
24             string sql = $"insert into Students(StudentName,Gender,Birthday,StudentIdNo,Age,PhoneNumber,StudentAddress,ClassId)" +
25                 $"values(‘{"王洛一"}‘,‘{""}‘,‘{"1993-8-16"}‘,{4103251987756789},{22},‘{"15234567890"}‘,‘{"苏州"}‘,{2})";
26             //创建Command对象
27             cmd.CommandText = sql;
28             int result = cmd.ExecuteNonQuery();
29             if (result == 1)
30             {
31                 Console.WriteLine("添加成功");
32             }
33             else
34             {
35                 Console.WriteLine("添加失败");
36             }
37             //执行【修改一个实体】
38             string sql1 = $"update Students set StudentName=‘{"刘伟一"}‘,Age=23 where StudentName=‘{"王洛一"}‘";
39             cmd.CommandText = sql1;
40             int result1 = cmd.ExecuteNonQuery();
41             if (result1 == 1)
42             {
43                 Console.WriteLine("修改成功");
44             }
45             else
46             {
47                 Console.WriteLine("修改失败");
48             }
49             //执行【删除一个实体】
50             string sql2 = $"delete from Students where StudentName=‘{"刘伟一"}‘";
51             cmd.CommandText = sql2;
52             int result2 = cmd.ExecuteNonQuery();
53             if (result2 == 1)
54             {
55                 Console.WriteLine("删除成功");
56             }
57             else
58             {
59                 Console.WriteLine("删除失败");
60             }
61             //执行【一次插入多条sql语句】
62             string sql_1 = $"insert into Students(StudentName,Gender,Birthday,StudentIdNo,Age,PhoneNumber,StudentAddress,ClassId)" +
63                 $"values(‘{"王洛2"}‘,‘{""}‘,‘{"1993-8-16"}‘,{4103251387756789},{22},‘{"15234567890"}‘,‘{"苏州"}‘,{2})";
64             string sql_2 = $"insert into Students(StudentName,Gender,Birthday,StudentIdNo,Age,PhoneNumber,StudentAddress,ClassId)" +
65                 $"values(‘{"王洛3"}‘,‘{""}‘,‘{"1993-8-16"}‘,{4103251487756789},{22},‘{"15234567890"}‘,‘{"苏州"}‘,{2})";
66             string sql_3 = $"insert into Students(StudentName,Gender,Birthday,StudentIdNo,Age,PhoneNumber,StudentAddress,ClassId)" +
67                 $"values(‘{"王洛4"}‘,‘{""}‘,‘{"1993-8-16"}‘,{4103251587756789},{22},‘{"15234567890"}‘,‘{"苏州"}‘,{2})";
68             string manySql = sql_1 + ";" + sql_2 + ";" + sql_3;
69             cmd.CommandText = manySql;
70             int result4 = cmd.ExecuteNonQuery();
71             Console.WriteLine($"插入{result4}成功");
72             //【5】关闭连接
73             conn.Close();
74             if (conn.State==ConnectionState.Closed)
75             {
76                 Console.WriteLine("Connection is Closed!");
77             }
78             Console.ReadLine();
79         }
80     }
81 }
插入、修改、删除的C#_SQL
技术分享图片
            //执行【一次插入多条sql语句】
            string sql_1 = $"insert into Students(StudentName,Gender,Birthday,StudentIdNo,Age,PhoneNumber,StudentAddress,ClassId)" +
                $"values(‘{"王洛5"}‘,‘{""}‘,‘{"1993-8-16"}‘,{4103251387756789},{22},‘{"15234567890"}‘,‘{"苏州"}‘,{2})";
            string sql_2 = $"insert into Students(StudentName,Gender,Birthday,StudentIdNo,Age,PhoneNumber,StudentAddress,ClassId)" +
                $"values(‘{"王洛6"}‘,‘{""}‘,‘{"1993-8-16"}‘,{4103251487756789},{22},‘{"15234567890"}‘,‘{"苏州"}‘,{2})";
            string sql_3 = $"insert into Students(StudentName,Gender,Birthday,StudentIdNo,Age,PhoneNumber,StudentAddress,ClassId)" +
                $"values(‘{"王洛7"}‘,‘{""}‘,‘{"1993-8-16"}‘,{4103251587756789},{22},‘{"15234567890"}‘,‘{"苏州"}‘,{2})";
            string manySql = sql_1 + ";" + sql_2 + ";" + sql_3;
            cmd.CommandText = manySql;
            int result4 = cmd.ExecuteNonQuery();
            Console.WriteLine($"插入{result4}条实体成功");
插入多条实体记录

9.获取标识列

  9.1问题引出

    在Students表中添加一个新的学员对象,并返回新增学员的学号

    提示:学号是自动表示列,即插入新纪录以后返回该记录的标识列

  9.2问题解决

    在insert语句后面添加select @@identity查询

    在执行ExecuteScalar()方法,同时执行insert和select

  9.3示例

技术分享图片
insert into Students(StudentName,Gender,Birthday,Age,StudentIdNo,PhoneNumber,StudentAddress,ClassId)values(王二,,1989-9-8,22,12342211,15676545678,河南,1,);
select @@Identity
获取新增标识列

  9.4说明

    @@identity是数据库中的一个全局变量,里面保存着最近一次生成的标识列的值

技术分享图片
            string sql = $"insert into Students(StudentName,Gender,Birthday,StudentIdNo,Age,PhoneNumber,StudentAddress,ClassId)" +
                $"values(‘{"王洛一"}‘,‘{""}‘,‘{"1993-8-16"}‘,{4103251956789},{22},‘{"15234567890"}‘,‘{"苏州"}‘,{2})";
            //创建Command对象
            cmd.CommandText = sql+";select @@identity";
            object re = cmd.ExecuteScalar();
返回标识列

10.执行增、删、改步骤总结

  1. 创建Connection对象
  2. 组合sql语句insert、update、delete
  3. 创建Command对象,并封装Connection和Sql语句
  4. 打开连接
  5. 执行ExecuteNonQuery()方法,返回受影响行数
  6. 关闭连接

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

    

 

SQL02——ADO.NET数据访问技术

原文:https://www.cnblogs.com/yangmengke2018/p/11619875.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!