数据访问技术

目录

1.1ADO.NET简介

1.1.1ADO.NET体系结构

1、.NET Framework数据提供程序

2、数据集DataSet

1.2Connection对象

1.2.1Connection对象的概述

1.2.2连接数据库

1.3Command对象执行SQL语句

1.3.1Command对象的简介

1.3.2Command对象的属性

1.3.3Command对象的常用方法

1.4DataReader对象

1.4.1DataReadader对象概述

1.4.2判断查询结果中是否有值

1.4.3DataReader对象的常用方法


1.1ADO.NET简介

ADO.NET时一组想.NET程序员公开数据访问服务的类。用于支持对Microsoft SQL Server 和 XML等数据源进行访问。

 connection对象:提供与数据库的连接功能

Command对象:用于返回数据、修改数据、运行存储过程、发送以及检索参数信息等数据库命令

DataReader对象:用于通过Command对象从数据库中检索信息;

DataAdapter对象:用于连接Dataset对象和数据源,与DataReader相似,但速度慢于它;使用Command对象在数据源中执行命令,意见将数据加载到DataSet中,并确保DataSet中的数据的更改与数据源保持一致;

DataSet对象:是ADO.NET的核心,是一个数据库容器,可以把它当做是一个存放在内存中的数据库,它支持分布式数据方案。

1.1.1ADO.NET体系结构

在ADO.NET中,用于访问和数据库的两个主要组件是.NET Framework 数据提供程序和数据集DataSet.

1、.NET Framework数据提供程序

是提供程序是专为数据操作设计的组件,用于处理不同的数据源,支持访问特定数据库、执行SQL命令和检测结果。

System.Date               //提供对表示ADO.NET结构的类的访问
System.Date.SqlClient    //SQL服务器数据提供程序,用于访问SQL Server数据库的类集合
System.Date.Odbc         //ODBC数据提供程序
System.Date.OleDb        //OLE DB数据提供程序
System.Date.OracleClient //Oracle数据提供程序

2、数据集DataSet

是专为独立于所有数据源的数据访问设计的,他在支持ADO.NET的断开式、分布式数据方案中起着至关重要的作用。

1.2Connection对象

1.2.1Connection对象的概述

它是用于连接对象,主要功能是建立与物理数据库的连接。

说明:根据使用数据库的不同,引用不同的命名空间,然后通过命名空间中的Connection对象连接类连接数据库。例如,连接SQL Server数据库,首先要通过Using System.data.SqlClient命令引用SQL 数据提供程序,然后才能调用空间下的SqlConnection类连接数据库

connectionState枚举值及说明
枚举值说明
Broken

与数据源的连接中断。只有在连接打开之后才可能发生这种情况。可以关闭处于这种状态的连接,然后重新打开

Closed连接处于关闭状态
Connecting链接对象正在与数据源连接
Executing连接对象正在执行命令
Fetching连接对象正在检索数据
Open连接处于打开状态

1.2.2连接数据库

设置连接字符串

1、SQL Server身份验证连接字符串,语法如下

server=服务器名;database=数据库名;uid=用户名;pwd=密码

2、Windows身份验证连接字符串

server=服务器名;database=数据库名;Integrated Security=true

3、创建Connection对象

SqlConnection 连接对象名=new SqlConnection("连接字符串")

4、打开和关闭连接

当对数据库操作完毕后,要关闭与数据库的连接,释放占用的资源。可通过Close或Dispose方法关闭。

Close:关闭一个连接

Dispose:不仅关闭一个连接,还可以清理连接所占用的资源。

注:Dispose方法关闭连接,就不可以再次直接使用Open方法打开,必须重新初始化连接再打开

连接对象名.Open()     //打开连接
连接对象名.Close()    //关闭连接

连接案例如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;

namespace 连接测试
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //定义数据库连接字符串
            string SQLname = "server=.;database=Promise;uid=sa;pwd=******";
            //创建连接对象
            SqlConnection conn = new SqlConnection(SQLname);
            //打开数据库连接
            conn.Open();
            //检测数据库连接是否打开
            if (conn.State == ConnectionState.Open)
            {
                Console.WriteLine("连接成功");
            }
            //关闭数据库
            conn.Close();
        } 
    }
}

1.3Command对象执行SQL语句

1.3.1Command对象的简介

Command对象是一个数据命令对象,主要功能是向数据库发送查询、更新、删除、修改操作的SQL语句。

1.3.2Command对象的属性

Command对象有3个重要的属性,分别是Connection属性、CommandText属性和CommandType属性

Connection属性:用于设置Sqlcommand使用的SqlConnection。

CommandText属性:用于设置要对数据源执行的SQL语句或存储过程

CommandType属性:用于设置指定CommandText类型。它的属性值是CommandType枚举值。如下:
StoreProcedure:存储过程的名称
TableDirect:表的名称
Text:SQL文本命令

            string server = "server=.;database=Promise;uid=sa;pwd=********";
            SqlConnection conn = new SqlConnection(server);
            conn.Open();
            if (conn.State == ConnectionState.Open) 
            { 
                Console.WriteLine("连接成功");
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;    // 设置connection属性
                //设置commandtext属性,设置sql语句
                cmd.CommandText = "select * from qq";
                //设置CommandTyoe属性为text
                cmd.CommandType = CommandType.Text;
            }
            else 
            {
                Console.WriteLine("连接失败"); 
            }

也可以写作

string sql="select * from stu"   //创建DML语句
sqlcommand cmd=new sqlcommand(sql,conn)  //创建sqlcommand对象(命令对象)
                                         //conn是connection对象

1.3.3Command对象的常用方法

Command对象的常用方法

方法 说明 ExecuteNonQuery 执行T-SQL语句并返回受影响的行数(可用于判断命令是否执行成功) ExecuteReader 执行查询命令,并返回DataReader对象(读取查询的值) ExecuteScalar 执行查询命令,返回结果集中首行首列的值(一般在聚合函数时使用)

1.4DataReader对象

1.4.1DataReadader对象概述

是数据读取器对象,提供只读、向前的游标,如果应用程序需要每次从数据中取出最新的数据,或者只是需要快速读取数据,并不需要修改数据,那么就可以使用DataReader对象进行读取。

DataReader类型
.NET Framework数据提供程序数据读取对象
System.Date.SqlClient 命名空间下SqlDataReader
System.Date.OleDb  命名空间下OleDbDataReader
System.Date.Odbc   命名空间下OdbcDataReader
System.Date.Oracle 命名空间下OracleDataReader

1.4.2判断查询结果中是否有值

可以通过SqlDataReader对象的HasRows属性获取一个值,该值指示SqlDataReader是否包含一行或多行,即判断查询结果是否有值。

参考代码

string sql="select * from name";
sqlcommand cmd = new sqlcommand(sql,conn);
sqldatareader read=cmd.ExecuteReader();
read.Read();
if(read.HasRows)
{
    //有值
}
else
{
    //没值
}

1.4.3DataReader对象的常用方法

DataReader对象的常用方法
方法说明
Read

使用DataReader前进到下一条记录,如果下一条有数据,则返回True反之为

False

Close关闭DataReadder对象
GetName获取指定列的名称
static void Main(string[] args)
        {
            string promise = "server=.;database=3CDB;Integrated Security=true";
            string sql1 = "select sum(price) from Products";
            string sql2 = "select count(*) from Products";
            SqlConnection sql = new SqlConnection(promise);
            sql.Open();
            SqlCommand cmd = new SqlCommand(sql1, sql);
            string reader = cmd.ExecuteScalar().ToString();
            cmd = new SqlCommand(sql2, sql);
            string count = cmd.ExecuteScalar().ToString();
            Console.WriteLine(reader+"  "+count);
            sql.Close();
        }
 static void Main(string[] args)
        {
            string promise = "server=.;database=3CDB;Integrated Security=true";
            string sqly = "select * from admins";
            SqlConnection sql = new SqlConnection(promise);
            sql.Open();
            SqlCommand cmd = new SqlCommand(sqly, sql);
            SqlDataReader reader = cmd.ExecuteReader();
            while(reader.Read())
            {
                string id, loginid, loginPwd, name;
                id = reader["ID"].ToString();
                loginid = reader["loginID"].ToString();
                loginPwd = reader["loginPwd"].ToString();
                name = reader["name"].ToString();
                Console.WriteLine(id,loginid,loginPwd,name);
            }
            sql.Close();
        }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值