C#与数据库访问技术总结(五)之Command对象的常用方法

Command对象的常用方法

说明:上篇总结了Command对象的几个数据成员,这节总结Command对象的常用方法。

  同样,在不同的数据提供者的内部,Command对象的名称是不同的,在SQL Server Data Provider里叫SqlCommand,而在OLE DB Data Provider里叫OleDbCommand。

下面将详细介绍Command类型对象的常用方法,包括构造函数、执行不带返回结果集的SQL语句方法、执行带返回结果集的SQL语句方法和使用查询结果填充DataReader对象的方法。

    1.构造函数

构造函数用来构造Command对象。对于SqlCommand类型的对象,其构造函数说明如表 2-6所示。


函数定义


参数说明


函数说明


SqlCommand()


不带参数


创建SqlCommand对象


SqlCommand(string cmdText)


cmdText: SQL 语句字符串


根据SQL语句字符串,创建SqlCommand对象


SqlCommand(string cmdText, SqlConnection connection)


cmdText: SQL 语句字符串

connection: 连接到的数据源


根据数据源和SQL语句,创建SqlCommand对象


SqlCommand(string cmdText, SqlConnection connection,  SqlTransaction transaction)


cmdText: SQL语句字符串

connection: 连接到的数据源

transaction: 事务对象


根据数据源和SQL语句和事务对象,创建SqlCommand对象

(1) 第一个构造函数不带任何参数

  SqlCommand  cmd=newe SqlCommand();

  cmd.Connection=ConnectionObject;    string CommandText=" select *from studentInfo ";

  cmd.CommandText=CommandText;

上面代码段使用默认的构造函数创建一个SqlCommand对象。然后,把已有的Connection对象ConnectionObject和命名文本CommandText分别赋给了Command对象的Connection属性和CommandText属性。

除此之外,许多关系型数据库,例如SQL Server 和Oracle,都支持存储过程。可以把存储过程的名称指定为命名文本。例如,使用编写 GetAllStudent存储过程为命名文本:

string CommandText=" GetAllStudent ";

cmd.CommandType=CommandType.StoredProcedure;
cmd.CommandText=CommandText;

(2) 第二个构造函数可以接受一个命令(SQL)文本

 string CommandText=" select *from studentInfo "; 

  SqlCommand  cmd=newe SqlCommand(CommandText);

  cmd.Connection=ConnectionObject;

上面的代码实例化了一个Command对象,并使用给定命令文本对Command对象的CommandText属性进行了初始化。

然后,使用已有的Connection 对象对Command对象的Connection属性进行了赋值。(这种方法在上一篇说过,不建议使用,使用最多的是下面的方法)

(3) 第三个构造函数接受一个Connection和一个命名文本

  SqlCommand  cmd=newe SqlCommand(CommandText, ConnectionObject);

注意这两个参数的顺序,第一个为string类型的命令文本,第二个为Connection对象。

(4) 第四个构造函数接受三个参数,第三个参数是SqlTransaction对象,这里不做讨论。

另外,Connection 对象提供了CreateCommand方法,该方法将实例化一个Command对象,并将其Connection属性赋值为建立该Command对象的Connection对象。

无论在什么情况下,当把Connection对象赋值给Command对象的Connection属性时,并不需要Connection对象是打开的。但是,如果连接没有打开,则在命令执行之前必须首先打开连接。

而对于OleDbCommand类型的对象,其构造函数如下表所示。同样可以看出,它们和SqlCommand类的构造函数非常相似。


函数定义


参数说明


函数说明


OleDbCommand()


不带参数


创建OleDbCommand对象


OleDbCommand(string cmdText)


cmdText: SQL语句字符串


根据SQL语句字符串,创建OleDbCommand对象


OleDbCommand(string cmdText,OleDbConnection connection)


cmdText: SQL语句字符串

connection:连接到的数据源


根据数据源和SQL语句,创建OleDbCommand对象


OleDbCommand(stringcmdText, OleDbConnection connection ,

OleDbTransaction transaction)


cmdText: SQL语句字符串

connection:连接到的数据源

transaction:事务对象


根据数据源和SQL语句和事务对象,创建OleDbCommand对象

命令对象构造完成后,就可以执行命令对数据库进行操作了。命令对象所提供的用于执行命令的方法有很多种,具体使用哪个方法取决于命令的执行结果返回什么样的数据。

SqlCommand 提供了4个执行方法:ExecuteNonQuery()、ExecuteScalar()、ExecuteReader()、ExecuteXmlReader()。

详细见下面相关部分。

命令对象提供的用于执行命令的方法及其含义如表


方法


含义


Cancel


试图取消命令的执行


ExecuteNonQuery


对连接执行SQL语句并返回受影响的行数


ExecuteReader


执行查询,将查询结果返回到数据读取器(DataReader)中


ExecuteScalar


执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行


ExecuteXmlReader


执行查询,将查询结果返回到一个XmlReader对象中

  

 

2.ExecuteNonQUery方法

ExecuteNonQuery方法用来执行Insert、Update、Delete等非查询语句和其他没有返回结果集的SQL语句,并返回执行命令后影响的行数。

如果Update和Delete命令所对应的目标记录不存在,返回0。如果出错,返回-1。

String cnstr="server=(local);database=student; Integrated Security=true";

SqlConnection cn=new SqlConnection(cnstr);

cn.Open();

string sqlstr="update student set  name=‘Jone‘ where name=‘Bill‘ ";

SqlCommand cmd=new SqlCommand(sqlstr, cn);

cmd.ExecuteNonQuery();

cn.Close();

3.ExecuteScalar()方法

在许多情况下,需要从SQL语句返回一个结果,例如客户表中记录的个数,当前数据库服务器的时间等。

ExecuteScalar方法执行一个SQL命令,并返回结果集中的首行首列(执行返回单个值的命令)。如果结果集大于一行一列,则忽略其他部分。

  根据该特性,这个方法通常用来执行包含Count、Sum等聚合函数的SQL语句。

下面的代码读取数据库中表student的记录个数,并把它输出到控制台上。

String cnstr="server=(local);database=student; Integrated Security=true";

SqlConnection cn=new SqlConnection(cnstr);

cn.Open();

string sqlstr="select count(*) from student";

SqlCommand cmd=new SqlCommand(sqlstr, cn);

object count=cmd.ExecuteScalar();

Console.WriteLine(count.ToString());

cn.Close();

ExecuteScalar()方法的返回值类型是Object,根据具体需要,可以将它转换为合适的类型。

    4.ExecuteReader()方法

    ExecuteReader()方法执行命令,并使用结果集填充DataReader对象。

    ExecuteReader()方法用于执行查询操作,它返回一个DataReader对象,通过该对象可以读取查询所得的数据。

    ExecuteReader()方法在Command对象中用得比较多,通过DataReader类型的对象,应用程序能够获得执行SQL查询语句后的结果集。

  该方法的两种定义为:

       ?ExecuteReader(),不带参数,直接返回一个DataReader结果集。

?   ExecuteReader(CommandBehavior behavior),根据behavior的取值类型,决定DataReader的类型。

  如果behavior取值是CommandBehavior.SingleRow这个枚举值,则说明返回的ExecuteReader只获得结果集中的第一条数据。

    如果取值是CommandBehavior.SingleResult,则说明只返回在查询结果中多个结果集里的第一个。

  一般来说,应用代码可以随机访问返回的ExecuteReader列,

  但如果behavior取值为 CommandBehavior.SequentialAccess,则说明对于返回的ExecuteReader对象只能顺序读取它包含的列。

  也就是说,一旦读过该对象中的列,就再也不能返回去阅读了。这种操作是以方便性为代码换取读数据时的高效率,需谨慎使用。

String cnstr="server=(local);database=student; Integrated Security=true";

SqlConnection cn=new SqlConnection(cnstr);

cn.Open();

string sqlstr="select * from student";

SqlCommand cmd=new SqlCommand(sqlstr, cn);

SqlDataReader dr=cmd.ExecuteReader();//建立SqlDataReader 对象

while(dr.Read())//循环输出每一条记录

{

    String name=dr["姓名"].ToString();//读取姓名子段

    Console.WriteLine(name);//控制台输出

}

dr.Close();//关闭结果集

cn.Close();//关闭数据库连接

这段代码从数据库的student表中读取全部数据,并把该表的“姓名”字段的数据全部输出到控制台上。

ExecuteXmlReader 

SqlCommand特有的方法,OleDbCommand无此方法。该方法执行将返回XML字符串的命令。它将返回一个包含所返回的XML的System.Xml.XmlReader对象。

时间: 2024-08-26 06:53:04

C#与数据库访问技术总结(五)之Command对象的常用方法的相关文章

ADO.NET数据库访问技术

ADO.net:数据库访问技术程序操作的数据都是变量或对象,这些东西都存在于内存中但是有很多的数据是存在数据库中的,数据库中的数据存在于硬盘上 作用:将数据库中的数据取到内存中来,可以让程序进行操作 将内存中的数据,写入到数据库中 1.using System.Data.SqlClient; //引用命名空间 2.建立 数据库连接类 string str = "server=.;database=Data0515;user=sa;pwd=123;";//连接字符串 SqlConnect

C#-数据库访问技术 ado.net——创建 数据库连接类 与 数据库操作方法 以及简单的数据的添加、删除、修改、查看

数据库访问技术 ado.net 将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术 1.创建数据库,并设置主外键关系 2.创建新的C#项目,创建 数据库连接类 与 数据库操作方法 a.引用数据库 using System.Data.SqlClient;    b.创建数据库连接类:先进行编写连接字符串,在实例化连接类 c.创建数据库操作方法(此处不是实例化类)    d.打开数据库 → 执行操作 → 关闭数据

数据库访问技术之JDBC

在了解JDBC之前呢,我们可以先对ODBC做一个回顾,以便于更好的理解JDBC.看名字也知道这两个关系不一般,他们实现了同样的功能,为应用程序连接和操作数据库提供支持.所以,我们先从ODBC开始. ODBC ODBC(Open Database Connectivity)是开放数据库互连的简称,是一种使用SQL的应用程序接口.它是一系列的规范和对数据库访问的API.那么API+SQL就可以执行对数据库的操作.它是不依赖于DBMS的,即通过ODBC可以以相同的方式连接大部分数据库.它包括了应用程序

C#与数据库访问技术总结(十八)

ADO.NET 代码综合示例 前面已经介绍过OLE DB.NET和SQL Server.NET数据提供者可以用来连接不同的数据源. 以下代码不仅综合演示了使用ADO.NET的这两种数据提供者访问数据库的一般步骤,而且说明了使用不同种类的ADO.NET组件集合访问数据库的一般步骤. 可以通过代码进一步了解这两种数据提供者访问方式的异同之处. 使用OLE DB.NET  Provider OLE DB的数据提供者可以访问Access和SQL等数据库,代码如下: //设置连接字符串 string db

ADO.NET数据库访问技术(转)

这几天的自学,现在总结一下关于C#中连接数据库的一些知识点: 1.使用Connection连接数据库的步骤: (1).添加命名空间 System.Data.SqlClient(注意:初学者经常会忘记) (2)定义连接字符串.连接SQL Server 数据库时: server=服务器名:database=数据库名:uid=用户名:pwd=密码:例如:要连接本机上的StudentManagement数据库,用户名为sa,密码为111 string connString="server=.;datab

C#与数据库访问技术总结(十五)之 DataAdapter对象代码示例

DataAdapter对象代码示例 下面的代码将说明如何利用DataAdapter对象填充DataSet对象. private static string strConnect=" data source=localhost;uid=sa;pwd=aspent;database=LOGINDB" string sqlstr=" select * from USER "; //利用构造函数,创建DataAdapter SqlDataAdapter da=new Sql

C#与数据库访问技术总结(七)综合示例

综合示例 说明:前面介绍了那么多,光说不练假把式,还是做个实例吧. 表:首先你要准备一张表,这个自己准备吧.我们以学生表为例. 1.ExecuteScalar方法 ExecuteScalar方法执行返回单个值的命令.例如,如果想获取Student数据库中表studentInfo的学生的总人数,则可以使用这个方法执行SQL查询: Select count(*) from studentInfo . (1) 建立Windows Application 应用程序 (2) 在Form1上添加一个按钮Bu

ADO.NET(数据库访问技术)

[ADO.net结构]: ADO.NET用于访问和操作数据库的两个主要组件是:.NET Framework 数据提供程序和DataSet. a..NET Framework数据提供程序:是专门为数据操作设计的组件,用于处理不同的数据源,支持访问特定的数据库.执行SQL命令和检索结果. b..NET Framework数据提供程序包含4个核心对象:  Connection:(连接)建立与特定数据源的连接:   Command:(命令)对数据源执行命令:   DataReader:( 数据读取)从数

C#与数据库访问技术总结(十六)之 DataSet对象

DataSet对象 DataSet对象可以用来存储从数据库查询到的数据结果,由于它在获得数据或更新数据后立即与数据库断开,所以程序员能用此高效地访问和操作数据库. 并且,由于DataSet对象具有离线访问数据库的特性,所以它更能用来接收海量的数据信息. DataSet对象概述 DataSet是ADO.NET中用来访问数据库的对象. 由于其在访问数据库前不知道数据库里表的结构,所以在其内部,用动态XML的格式来存放数据.这种设计使DataSet能访问不同数据源的数据. DataSet对象本身不同数