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方法。

 

posted @ 2008-10-26 13:45  小落  阅读(771)  评论(0)    收藏  举报