当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET 2.0中执行数据库操作命令之一

ASP.NET
ASP.NET开发:简化应用程序的开发支持Web标准
asp.net XMLHttpRequest实现用户注册前的验证
asp.net 页面间传值方法小结
asp.net url重写浅谈
asp.net 验证码生成和刷新及验证
C#精髓 GridView72大绝技 学习gridview的朋友必看
实例说明asp.net中的简单角色权限控制
asp.net网站开发包wq.dll打包下载
js与ASP.NET 中文乱码问题
asp.net checkbox 动态绑定id GridView删除提示
asp.net TextBox回车触发事件 图片在img显示
asp.net 脏字典过滤问题 用正则表达式来过滤脏数据
asp.NET 脏字过滤算法
asp.NET 脏字过滤算法 修改版
asp.net sql 数据库处理函数命令
asp.net Javascript 的几种写法与提示
ASP.NET MVC学习笔记
asp.net 中国身份证号码验证代码 非正则
Asp.net中使用Sqlite数据库的方法
asp.net 中文字符串提交乱码的解决方法

ASP.NET 2.0中执行数据库操作命令之一


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 91 ::
收藏到网摘: n/a

数据库命令执行时使用Command对象。Command类有三种:SqlCommand、OleDbCommand与OdbcCommand。

Command对象主要用来运行SELECT、INSERT、UPDATE或DELETE之类的SQL语句。Command对象还可以调用存储过程或从特定表中取得记录。

DataReader对象主要是用来读取数据结果,使用它读取记录时通常比从DataSet更快。DataReader类有三种:SqlDataReader、OleDbDataReader和OdbcDataReader。DataReader对象用Commmand对象从数据库中读取记录,并且DataReader对象只能向前的读取记录,用于在某些情况下替代DataSet对象(DataSet对象可以存储数据库中的行拷贝,可以在切断数据库的连接时处理这个拷贝,我们将在以后的章节中详细介绍该对象)。

注意:不能用DataReader修改数据库中的记录,它是采用向前的,只读的方式读取数据库。

SqlCommand类

SqlCommand对象用于对SQL Server数据库执行命令。OleDbCommand对象用于对支持OleDb的数据库执行命令,如Oracle与ACCESS。

OdbcCommand对象用于对支持Odbc的数据库执行命令。尽管SqlCommand类是针对SQL Server的,但是这个类的许多属性、方法与事件和

OleDbCommand及OdbcCommand等类相似。本章将重点讲解SqlCommand特定的属性与方法,其他的Command类你可以参考相应的帮助文档。

注意:使用不同的Command对象需要导入不同的命名空间。OleDbCommand的命名空间为System.Data.OleDb。SqlCommand的命名空间为System.Data.SqlClient。OdbcCommand的命名空间为System.Data.Odbc。

SqlCommand属性:

属性 说明

CommandText 其返回类型为string, 获取或设置要对数据源执行的 SQL 语句、存储过程或表。

CommandTimeOut 其返回类型为int,获取或设置在终止执行命令的尝试并生成错误之前的等待时间。

CommandType  其返回类型为CommandType,读取或设置表示CommandText属性将如何被解释的值,其有效的值可以为CommandType.Text、CommandType.StoredProcedur与CommandType.TableDirect,分别表示SQL语句、存储过程调用或要读取的表,默认为Text。

Connection 其返回类型为string, 获取或设置 SqlCommand 的此实例使用的 SqlConnection。

Parameters 其返回类型为SqlParameterCollection,取得提供给命令的参数(如有)。

SqlCommand方法:

方法 说明

Cancle() 其返回类型为void,取消命令的执行

CreateParameter() 其返回类型为SqlParameter, 用于创建 SqlParameter 对象的新实例。

ExecuteNonQuery() 其返回类型为int,执行不返回结果集的Sql语句,包括INSERT、UPDATE与DELETE语句、DDL语句和不返回结果集的存储过程调用。返回的int值是命令影响的数据库行数。

ExecuteReader() 其返回类型为SqlDataReader, 执行SELECT语句、TableDirect命令或返回结果集的存储过程调用。在SqlDataReader对象中返回结果集。

ExecuteScalar() 其返回类型为object,执行返回单个值的SELECT语句(任何其他的值将被忽略)。这个命令结果作为对象被返回。

ExecuteXMLReader() 其返回类型为XmlReader,执行返回XML数据的SELECT语句,用XMLReader对象返回结果集,只适用于SqlCommand类
 
生成SqlCommand对象

我们可以用构造函数生成SqlCommand对象,也可以调用SqlConnection对象的CreateCommand()方法生成SqlCommand对象,下面分别介绍这两种方法。

用构造函数生成SqlCommand对象

SqlCommand对象的构造函数如下所示:

SqlCommand()

SqlCommand(string commandText)

SqlCommand(string commandText,SqlConnection MySQLConnection)

程序代码说明:在上述语法范例的程序代码中,commandText包含SQL语句、存储过程调用或要读取的表。MySQLConnection是对应的SqlConnection对象。

在使用SqlCommand对象之前,首先要确定一个SqlConnection对象,用于和SQL Server数据库进行数据传递。

MySQLConnection.ConnectionString="server=localhost;database=Northwind;
integrated security=SSPI";

然后可以用下列语句生成新的SqlCommand对象:

SqlCommand MySQLCommand=new SqlCommand();

再将mySqlCommand对象的Connection属性设置为MySQLConnection:

mySqlCommand.Connection= MySQLConnection;

这样mySqlCommand对象就可以使用MySQLConnection与数据库进行数据传递。现在,Command对象的CommandType属性确定要执行的命令类型。可以用System.Data.CommandType枚举值指定CommandType属性。

CommandType的枚举值如下表所示:

数值 说明

Text  表示命令是SQL语句,默认值是Text

StoredProcedure  表示命令是储存过程调用

TableDirect 表示被读取的行和列的表名。注意:SqlCommand对象不支持TableDirect,要使用其他的Command类的对象。

例如你可以采用如下的形式执行一个SQL查询:

程序代码说明:在上述语法范例的程序代码中,我们设置了mySqlCommand对象的commandText为一个SELECT查询语句,并且指定了MySQLCommand对象的CommandType属性为CommandType.Text,表示命令是SQL语句。由于CommandType.Text是默认的CommandType值,所以我们可以将其注译掉。

还有一个更具效率的形式,那就是使用SqlCommand对象的其中一种构造函数:

SqlCommand MySQLCommand=new SqlCommand(”SELECT * FROM Employees”,myConnection);

程序代码说明:在上述语法范例的程序代码中,我们可以直接利用SqlCommand(string commandText,SqlConnection MySQLConnection) 构造函数,从而使得程序代码更加的简练和直观。

还可以使用储存过程来查询所需要的数据,我们可以采用如下的代码形式:

以下为引用的内容:
SqlCommand MySQLCommand=new SqlCommand(”GetEmpolyees”,myConnection);
MySQLCommand.CommandType=CommandType.StoredProcedure;

程序代码说明:在上述语法范例的程序代码中,GetEmpolyees为一个储存过程名,用来实现所有的雇员信息查询。并且将CommandType值指定为StoredProcedure,表示命令是储存过程调用。

使用CreateCommand()方法生成SqlCommand对象

如果不用构造函数,也可以使用SqlConnection对象的CreateCommand()方法生成SqlCommand对象。这个方法返回新的SqlCommand对象。例如:

SqlCommand mySqlCommand=MySQLConnection.CreateCommand();