ADO.NET中数据保存在内存中,并且以DataSet数据集的形式存放在内存中。
一、对象组成
1、Connection对象:
开启程序和数据库之间的连接,不利用连接对象打开数据库,就无法从数据库中取得数据。
常用属性:
ConnectionString 用于获取或设置用于打开数据库的字符串
Database 用于获取当前数据库或链接打开后要使用的数据库名称
DataSource 用于获取要连接的数据库实例名称
常用方法:
Open: 打开数据库连接
Close:关闭数据库
实例:
引入命名空间:
using System.Data;
using System.Data.SqlClient;
连接数据库:
SqlConnection con = new SqlConnection("server=.;database=Test;User ID=sa;Password=123456");
con.Open();
2、Command对象:
对数据库发出命令(增删改查等命令)
con
SqlCommand cmd = new SqlCommand("select * from TDepartment",con );
常用属性:
CommandText:获取或设置需要对数据源执行的SQL语句或存储过程
CommandType:说明CommandText的属性,如果将CommandType属性设置为StoreProceduce,则应将CommandText属性设置为存储过程的名称
常用方法:
ExecuteNonQuery:用于对连接执行SQL语句(Update、Insert、Delete)并返回受影响的行数。
ExecuteScalar:执行查询,返回结果集中的 第一行,第一列,其他的行和列将被忽略,因此该方法主要是从数据库中检索单个值,多用于聚合函数,例如Sum(),Count()
ExecuteReader:返回多行结果查询数据
实例:
SqlCommand cmd = new SqlCommand("select * from Login");
int count=cmd.ExecuteNonQuery();
SqlCommand cmd = new SqlCommand("select voteTitle from voteMaster where voteID=" + this.voteID, con);
string title =Convert .ToString ( cmd.ExecuteScalar());
SqlCommand cmd = new SqlCommand("select * from TDepartment",con );
SqlDataReader sdr = cmd.ExecuteReader();
this.ddList.DataSource = sdr;
this.ddList.DataBind();
sdr.Close();
3、DataReader对象:
只能依次一直向下循序地去取数据源中的数据,而且这些数据是只读的,不允许做其他操作。
优点:节约资源,效率高,降低网络的负载
实例:
SqlCommand cmd = new SqlCommand("select * from TDepartment",con );
SqlDataReader sdr = cmd.ExecuteReader();
this.ddList.DataSource = sdr;
this.ddList.DataBind();
sdr.Close();
SqlCommand cmdEmp = new SqlCommand("select * from emp where depID="+this.ddList.SelectedValue , con);
SqlDataReader sdrEmp = cmdEmp.ExecuteReader();
while (sdrEmp .Read ()) //判断DataReader中是否还有下一行
{
this.ListBox1.Items.Add(new ListItem (sdrEmp.GetString(1), sdrEmp.GetInt32(0).ToString ()));
}
sdrEmp.Close();
con.Close();
4、DataAdapter对象:
在数据源和DataSet之间执行数据传输工作
SqlDataAdapter sda = new SqlDataAdapter();//声明适配器对象
sda.SelectCommand = cmd;
DataSet ds = new DataSet();
sda.Fill(ds, "vote");
DataTable dt = ds.Tables["vote"];
DataRow dr = dt.Rows[0];//取出查询结果中的第一行
5、DataSet对象:
可以视为一个暂存区,可以把从数据库中查询到的数据保留起来,甚至可以将整个数据库显示出来。它本身不具备和数据源沟通的能力,也就是DataAdapter对象可作为DataSet对象和数据源传输数据的桥梁。
二、命名空间
1.System.Data命名空间
其中包含大部分组成ADO.NET架构的基础对象类别,例如DataSet对象、数据表、字段和关联等,因此要使用ADO.NET,就一定要使用这个命名空间。
2.System.Data.SqlClient命名空间
要使用SQL Server数据操作组件(SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter)来存取数据,必须引用这个命名空间。