欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ADO.NET

程序员文章站 2022-04-10 16:21:59
一、ADO.NET概要 ADO.NET是.NET框架中的重要组件,主要用于完成C#应用程序访问数据库 二、ADO.NET的组成 ①System.Data → DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint,DataColumn ......

一、ADO.NET概要

ADO.NET是.NET框架中的重要组件,主要用于完成C#应用程序访问数据库

二、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对象也称为数据库连接对象,Connection对象的功能是负责对数据源的连接。所有Connection对象的基类都是DbConnection类。 

3.1、连接字符串

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

3.1.1、SQL Server连接字符串

Data Source=.;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;

3.1.2、Access连接字符串

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\myDatabase.mdb;User Id=admin;Password=;

3.1.3、MySQL连接字符串

Server=myServerAddress;Database=myDatabase;Uid=myUsername;Pwd=myPassword;

3.1.4、DB2连接字符串

Server=myAddress:myPortNumber;Database=myDatabase;UID=myUsername;PWD=myPassword;

3.1.5、Oracle连接字符串

Data Source=TORCL;User Id=myUsername;Password=myPassword; 

在VS中获得连接字符串并连接到数据库:工具->连接到数据库

3.2、连接到数据库

Connection对象有两个重要属性: 

(1)ConnectionString:表示用于打开 SQL Server 数据库的字符串; 
(2)State:表示 Connection 的状态,有Closed和Open两种状态。 

Connection对象有两个重要方法:

(1)Open()方法:指示打开数据库;

(2)Close()方法:指示关闭数据库。

四、Command对象

Command对象也称为数据库命令对象,Command对象主要执行包括添加、删除、修改及查询数据的操作的命令。也可以用来执行存储过程。用于执行存储过程时需要将Command对象的CommandType 属性设置为CommandType.StoredProcedure,默认情况下CommandType 属性为CommandType.Text,表示执行的是普通SQL语句。

Command主要有三个方法:

4.1、ExecuteNonQuery

ExecuteNonQuery()执行一个非查询SQL语句,返回受影响的行数,这个方法主要用于执行对数据库执行增加、更新、删除操作,注意查询的时候不是调用这个方法。用于完成insert,delete,update操作。执行时返回影响行数。

using 关键字有两个主要用途:
  (
).作为指令,用于为命名空间创建别名或导入其他命名空间中定义的类型。
  (
).作为语句,用于定义一个范围,在此范围的末尾将释放对象。

using只能用于实现了IDisposable接口的类型,禁止为不支持IDisposable接口的类型使用using语句,否则会出现编译错误;

4.1.1、拼接字符串
string str = string.Format("Data Source={0};Initial Catalog={1};User ID={2};Password={3}", txtSQLAdd.Text, txtSqlName.Text, txtUser.Text, txtPwd.Text);

4.1.2、参数

如果直接拼接字符串会存在安全隐患,使用参数可以解决问题。

4.1.3、增加、删除、修改

这里的示例是insert,如果想执行delete与update代码是一样的,只是变化了SQL。

增加:insert [into] <表名> (列名) values (列值)     例:insert into Strdents (姓名,性别,出生日期) values ('开心朋朋','男','1980/6/15')

删除:delete from <表名> [where <删除条件>]    例:delete from a where name='开心朋朋'(删除表a中列值为开心朋朋的行)

修改:update <表名> set <列名=更新值> [where <更新条件>]    例:update tongxunlu set 年龄=18 where 姓名='蓝色小名'

4.2ExecuteScalar ()

ExecuteScalar ()从数据库检索单个值。这个方法主要用于统计操作。ExecuteScalar ()这个方法是针对SQL语句执行的结果是一行一列的结果集,这个方法只返回查询结果集的第一行第一列。针对SQL聚合函数(count,max,min,avg,sum)使用。

聚合函数:select count(*) from <表名>

可能返回NULL值,需要对结果进行判断。

if (object.Equals(my,null))  //可以使用Equals进行Null值的判断,易读性强
  Console.WriteLine("Not Data");
else
  Console.WriteLine("Yes"); 

五、ExecuteReader获得数据

ExecuteReader用于实现只进只读的高效数据查询。用来读取一个数据表。用于查询一个数据表。

ExecuteReader:返回一个SqlDataReader对象,可以通过这个对象检查查询结果。它提供的是只进只读的执行方式,读取一行之后,移动到下一行,上一行的数据就不能使用了。手动调用Read()方法之后,SqlDataReader对象才会移到结果集的第一行。Read()方法会返回一个bool值,True则下行可用,false表示下行不可用。

5.1、使用ExecuteReader实现数据查询

//执行查询返回结果集
                SqlDataReader sdr = cmd.ExecuteReader();
                //下移游标,读取一行,如果没有数据了则返回false
                while (sdr.Read())
                {
                    Console.WriteLine("编号:" + sdr["Id"] + ",车名:" + sdr["Title"] + ",速度:" + sdr["Speed"]);
                }

5.2、实体类

实体类用于封装及映射数据。

5.3DataGridView展示数据

 

定义一个表示对象的类

定义一个对象的列表

初始化一个对象,用sqlReader()将数据读出后存入对象。

把对象加入对象列表中。

对象列表与DataGridView 显示。

 

窗口间的传值

一个窗口定义一个对象【1】

在另外一个窗口定义一个对象2

显示窗口的时候把1赋值给2

在窗口2加载的时候把2的属性显示出来