ADO.NET是一组用于和数据源进行交互的面向对象类库
ADO.NET的主要对象有以下几个:
Connection:用于连接到数据库和管理对数据库的事务
Command:用于对数据库发生SQL命令
DataReader:用于从数据源读取只进数据记录流
DataSet:用于对单层数据、XML数据和关系数据进行存储、远程处理和编程
DataAdapter:用于将数据推入DataSet,并使数据与数据库保持一致
1.connection对象
(1)访问数据首先要建立操作对象的连接,这就是connection对象。通常用的访问SQL Server的叫SqlConnection类,访问其他的叫OleDbConnection类,如Access,Oracle
(2)connection对象有两个主要方法:Open()和Close() 打开和关闭连接。
可以在web.config中添加数据库连接字符串。更安全。
实例:
以C#语言编写的ASP.NET代码为例:
第一步,在Web.Config的<configuration>下面加上一个数据库配置信息
<connectionStrings>
<add name="squallx" connectionString="Data Source=将这里改成您的A数据库服务器IP;Initial Catalog=将这里改成您的数据库名A;Persist Security Info=True;User ID=将这里改成您的数据库用户名;Password=将这里改成您的数据库密码" providerName="System.Data.SqlClient"/>
</connectionStrings>
第二步,编写一个数据库连接类
public
class
Conn
{
public
Conn()
{
}
public
static
SqlConnection creatConn()
{
return
new
SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings[
"
squallx
"
].ConnectionString);
}
}
2.Command用于对数据库发出AQL命令,从而执行添加,修改,删除等操作。
(1)Command对象的两个方法:
ExecuteNonQuery() //执行命令并返回受影响的行数。可以理解为只执行sql语句
ExecuteReader()//执行命令并返回生成的DataReader
DataReader对象作用返回一个来自数据命令的只读,只进的数据流。(只读不能修改)
(2)Command语法
SqlCommand 对象名 = new SqlCommand("SQL语句",Connection实例化对象)
(3)对数据库的操作
//
查询数据
SqlCommand cmd
=
new
SqlCommand(
"
select * from info
"
,myStr);
SqlDataReader dr1
=
cmd.ExecuteReader();
while
(dr1.Read())
{
Response.Write(dr1[
"
name
"
]);
Response.Write(dr1[
"
sex
"
]);
Response.Write(
"
<br>
"
);
}
dr1.Close();
//
修改数据
SqlCommand update
=
new
SqlCommand(
"
update info set name='李四',sex='女'where name='张三'
"
,myStr);
update.ExecuteNonQuery();
//
删除数据
SqlCommand delete
=
new
SqlCommand(
"
delete from info where name='李四'
"
,myStr);
delete.ExecuteNonQuery();
Response.Write(
"
数据已删除
"
);
myStr.Close();
3.DataSet
数据集(DataSet)是独立于数据存储区且与之不同的数据结构,是一种代表关系数据的内存驻留结构。将数据库读到数据集,从而进行无连接的操作。
DataSet是ADO.NET中的关键对象,所有复杂的操作都要使用它。DataSet包含一组相关的DataTable对象,代表要使用的数据库表,每一个DataTable对象都用子DataRow和DataColumn对象,分别代表数据库的行和列。通过这些对象,可以获取表的行和列的所有元素。
4.DataAdapter
DataAdapter对象充当数据库和ADO.NET对象模型中断开连接的对象之间的桥梁。
DataAdapter对象在SataSet与源数据之间起到桥梁的作用。
DataAdapter对象会填充DataSet对象中的表,而且能读取缓存的更改并将其提交给数据库。
DataAdapter对象的两个主要方法:
Fill()方法:填充数据集。
Update()方法:向数据库提交存储在DataSet中的更改。
Update方法的原理:使用Update方法自动遍历DataTable中的所有行,以检查需要对数据库作出的变动,它为每一发生更改的行调用INSERT、UPDATE或DELETE命令
实例:
myStr.Open();
//
打开数据库连接
SqlDataAdapter da
=
new
SqlDataAdapter(
"
select * from info
"
,myStr);
DataSet ds
=
new
DataSet();
da.Fill(ds,
"
info
"
);
if
(ds.Tables[
0
].Rows.Count
==
0
)
{
Response.Write(
"
数据库中无数据!
"
);
}
else
{
for
(
int
i
=
0
;i
<
ds.Tables[
0
].Rows.Count;i
++
)
{
Response.Write(ds.Tables[
"
info
"
].Rows[i][
1
]);
Response.Write(ds.Tables[
"
info
"
].Rows[i][
"
sex
"
]);
Response.Write(
"
<br>
"
);
}
}
myStr.Close();
4.一个常用类
(1)SqlCommandBuilder类:自动生成单表命令,在更新单一表的简单情况下,我们不需要知道如何编写SQL语句以完成更新
(2)DataTable Rows集合的三个常用方法
Find方法:检索行
Add方法:创建行
Delete方法:删除行
实例:
myStr.Open();
//
打开数据库连接
SqlDataAdapter da
=
new
SqlDataAdapter(
"
select * from info
"
,myStr);
SqlCommandBuilder cb
=
new
SqlCommandBuilder(da);
//
生成SQL命令并与DataAdapter关联
DataSet ds
=
new
DataSet();
da.Fill(ds,
"
info
"
);
//
在使用DataSet之前我们必须将来自数据库的数据填充它
//
添加数据
DataRow dr
=
ds.Tables[
"
info
"
].NewRow();
//
使用DataTable对象的NewRow方法创建新行
dr[
"
name
"
]
=
"
张三
"
;
dr[
"
sex
"
]
=
"
男
"
;
ds.Tables[
"
info
"
].Rows.Add(dr);
//
Rows集合的Add方法添加行
//
修改数据
Response.Write(
"
修改之前的数据为:
"
+
ds.Tables[
"
info
"
].Rows[
0
][
"
name
"
]
+
"
"
+
ds.Tables[
"
info
"
].Rows[
0
][
"
sex
"
]
+
"
<br>
"
);
ds.Tables[
"
info
"
].Rows[
0
][
1
]
=
"
李四
"
;
ds.Tables[
0
].Rows[
0
][
2
]
=
"
女
"
;
Response.Write(
"
修改后的数据为:
"
+
ds.Tables[
0
].Rows[
0
][
1
]
+
"
"
+
ds.Tables[
0
].Rows[
0
][
2
]
+
"
<br>
"
);
//
删除数据
ds.Tables[
"
info
"
].Rows[
0
].Delete();
//
Rows集合的Delete方法删除行
da.Updata(ds,
"
info
"
);
Response.Write(
"
数据已删除
"
);
myStr.Close();