command类
command对象允许执行多种不同类型的查询。某些command对象可以采用结果集的方式获取数据,还有其他的则是会修改数据内容或者结构。
1、创建command对象
可以通过3种方式创建command对象。第一种就是使用new 关键字直接创建对象的一个实例,然后设置适当的属性;还可以使用一个可用的构造函数来制定查询字符串以及connection对象;第三种是调用connection类的CreateCommand方法。
string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/st.mdb";
OleDbConnection con = new OleDbConnection(strConn);
string strSql;
strSql = "select * from 学生";
con.Open();
OleDbCommand cmd;
//使用无参数构造函数
cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = strSql;
//使用参数构造函数
cmd = new OleDbCommand(strSql, cn);
//使用connection对象的CreateCommand方法
cmd = con.CreateCommand();
cmd.CommandText = strSql;
2、使用Command执行查询
(1)Command的最常见用法是执行返回结果的查询。例如查询学生表中所有性别男的信息。可以使用如下的sql语句
select * from 学生
要执行此查询,首先需要将command对象的CommandText属性设置为包含该查询文本的一个字符串。然后调用Command对象的ExecuteReader方法。
string strCon, strSql;
strCon = @"Provider=Microsoft.jet.oledb.4.0;data source=d:\st.mdb";
strSql = "select * from 学生 where 性别='男'";
OleDbConnection cn = new OleDbConnection(strCon);
cn.Open();
OleDbCommand cmd = new OleDbCommand(strSql, cn);
OleDbDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Console.Write("{0} {1} {2}", rdr["姓名"], rdr["性别"], rdr["年龄"]);
}
rdr.Close();
ExecuteReader方法返回一个DataReader对象,正是利用这个对象来查询的结果。DataReader允许使用基于流的方法来检查查询结果。在同一时间可以查看结果中的一行数据。在移到下一行数据行之后,上一行的内容将不再可用。DataReader的read方法调用同时完成两个任务。第一,read方法DataReader放置在结果集中的下一行,第二,该方法返回一个Boolean值,其指示是否存在可用行。
3、执行不返回结果集的查询
不返回结果集的查询通常称之为操作查询。操作查询共有两类数据操作语言查询和数据定义语言。
【数据操作语言查询】也称之为基于查询的更新,这些查询可用给改数据库的内容,如更新数据,删除数据,插入数据等。
下面是些例子。
INSERT INTO 学生 (姓名,性别,年龄) values ("王建野","男",25)
UPDATE 学生 set 年龄=年龄+12 where 年龄<20
DELETE FROM 学生 where 性别='男'
【数据定义语言】修改数据库结构
CREATE TABLE st (姓名 int not null constraint px_table primary key,filed2 varchar(32))
可以通过command的ExecuteReader方法来执行这些查询,但是这些查询不会返回任何行,所有似乎是一些不必要的开销。不会返回任何行的查询可以使用ExecuteNonQuery方法。

浙公网安备 33010602011771号