ADO.NET
一、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.2、ExecuteScalar ()
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.3、DataGridView展示数据
定义一个表示对象的类
定义一个对象的列表
初始化一个对象,用sqlReader()将数据读出后存入对象。
把对象加入对象列表中。
对象列表与DataGridView 显示。
窗口间的传值
一个窗口定义一个对象【1】
在另外一个窗口定义一个对象2
显示窗口的时候把1赋值给2
在窗口2加载的时候把2的属性显示出来