ADO.NET学习(一)
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 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命令
实例:
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方法:删除行
实例:
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();