Command三种方法
方法 | 说明 |
ExecuteNonQuery() | 不返回任何值,一般应用于Insert,update,delete语句中。 |
ExecuteScalar() | 返回一个值,一般用于只返回一个值的语句,如求数据统计的count语句,求最大数Max语句,求最小数Min语句。 |
ExecuteReader() | 返回一个IDataReader,可用于迭代返回记录。 |
DataReader对象提供了顺序的、只读的方式读取Command对象获得的数据结果集。正是因为DataReader是以顺序的方式连续地读取数据,所以DataReader会以独占的方式打开数据库连接。
由于DataReader只执行读操作,并且每次只在内存缓冲区里存储结果集中的一条数据,所以使用DataReader对象的效率比较高,如果要查询大量数据,同时不需要随机访问和修改数据,DataReader是优先的选择。
DataReader常用属性
属性 | 说明 |
FieldCount属性 | 表示记录中有多少字段 |
HasRows属性 | 用来表示DataReader是否包含数据 |
IsClosed属性 | 表示DataReader是否关闭 |
DataReader常用方法
方法 | 说明 |
Close方法 | 将DataReader对象关闭 |
GetDataTypeName方法 | 取得指定字段的数据形态 |
GetName方法 | 取得指定字段的字段名称 |
GetOrdinal方法 | 取得指定字段名称在记录中的顺序 |
GetValue方法 | 取得指定字段的数据 |
GetValues方法 | 取得全部字段的数据 |
Read方法 | 读取下一条记录 |
访问DataReader对象时,使用索引要比使用字段访问速度要快。
ADO.NET数据访问技术的一个突出的特点就是支持离线访问,而实现这种离线访问技术的核心就是DataSet对象,该对象通过将数据驻留在内存来实现离线访问。
DataSet对象由一组DataTable对象组成,这些对象与DataRelation对象互相关联。这些DataTable对象又包含Rows(行)集合、Columns(列)集合,Rows集合是由多个DataRow对象组成,Columns集合是由多个DataColumns对象组成。
DataSet常用简单方法
方法 | 说明 |
Clear | 移除表中所有行来清除任何数据的DataSet |
Clone | 复制该DataSet的结构但不复制数据 |
Copy | 复制DataSet的结构和数据 |
Dispose | 释放DataSet对象 |
Equals | 确定两个DataSet对象是否相同 |
Merge | 将制定的DataSet DataTable或DataRow对象的数组合并到当前的DataSet或DataTable中 |
Reset | 将DataSet重置为初始状态 |
DataAdapter对象时DataSet和数据源之间的桥梁,可以建立并初始化数据表(即DataTable),对数据源执行SQL指令,与DataSet对象结合,提供DataSet对象存取数据,可视为DataSet对象的操作核心。
代码示例:
string constr="Server=.;user=sa;pwd=sa;database=exam";
SqlConnection mycon=new SqlConnection(constr);
try{
mycon.Open();
string sql="select * from examtable";
SqlDataAdapter myda=new SqlDataAdapter(sql,mycon);
DataSet myds=new DataSet();
myda.FIll(myds,"myTable");
}
catch(Exception ex){
}
finnally{
mycon.Close();
}
DataAdapter对象概述,DataAdapter对象可用于执行数据库的命令操作,含有四个不同的操作命令,分别如下:
1、SelectCommand:用来选取数据源中的记录;
2、InsertCommand:用来向数据源中插入一条记录;
3、UpdateCommand:用来更新数据源中的数据;
4、DeleteCommand:用来删除数据源中的记录;
代码示例:
string constr="Server=.;user=sa;pwd=sa;database=exam";
SqlConnection mycon=new SqlConnection(constr);
try{
mycon.Open();
string updatesql="update mytable set gender='女' where name='张三'"
SqlDataAdapter myda=new SqlDataAdapter("select * from mytable ",mycon);
myda.UpdateCommand=new SqlCommand(updatesql,mycon);
DataSet myds=new DataSet();
myda.FIll(myds,"update ");//acceptchange处于true状态,不会更改数据源
//指定要更改的数据
DataRow row=myds,Tables[0].Row[0];
row["gender"]="女";
myda.Update(myds,"update");
}
catch(Exception ex){
}
finnally{
mycon.Close();
}