622使用Command对象进行数据操作.docx
《622使用Command对象进行数据操作.docx》由会员分享,可在线阅读,更多相关《622使用Command对象进行数据操作.docx(13页珍藏版)》请在冰点文库上搜索。
![622使用Command对象进行数据操作.docx](https://file1.bingdoc.com/fileroot1/2023-5/27/0780dbba-3ac3-487d-835b-9089510d9e40/0780dbba-3ac3-487d-835b-9089510d9e401.gif)
622使用Command对象进行数据操作
6.2.2使用Command对象进行数据操作
Command对象简介
Command对象是在Connection对象连接数据库之后,对数据库执行查询、添加、删除和修改等各种操作时使用。
操作实现的方式可以使用SQL语句,也可以使用存储过程。
根据所用的.NETFramework数据提供程
序的不同,Command对象也可以分成4种,分别是SqlCommand、OleDbComman、dOdbcCommand和OracleCommand,根据本书编排下面我们着重介绍一下SqlCommand。
SqlCommand对象常用属性
SqlCommand对象常用属性如下:
属性
说明
CommandText
获取或设置要执行的语句或存储过程
CommandType
获取或设置一个值,该值指示如何解释CommandText属性
Connection
获取或设置命令使用的连接对象。
默认为空
CommandTimeout
获取或设置试图执行命令时要等待的时间(以秒为单位)默认为
30秒
Parameters
获得与该命令关联的参数集合
表6.3SqlCommand对象常用属性
SqlCommand对象的常用属性详解:
•CommandType属性
获取或设置Command对象要执行命令的类型。
语法:
publicoverrideCommandTypeCommandType{get;set;}
属性值:
CommandType值之一,默认为Text。
当将CommandType设置为StoredProcedure时,应将CommandText属性设置为存储过程的名称。
当调用Execute方法之一时,该命令将执行此存储过程。
•CommandText属性
获取或设置要对数据源执行的程。
Transact-SQL语句或存储过程。
通过Command对象执行SQL语句或存储过
语法:
publicoverridestringCommandText{get;set;}
SqlCommand对象常用方法
SqlCommand对象常用方法如下:
方法
说明
ExecuteNonQuery
执行SQL语句并返回受影响的行数
ExecuteScalar
执行查询,并返回查询所返回的结果集中第一行的第一列,忽略其他列或行
ExecuteReader
执行返回数据集的SELECT语句
表6.4SqlCommand对象常用方法
SqlCommand对象常用方法详解:
ExecuteNonQuery方法
ExecuteNonQuery方法执行诸如UPDATE、INSERT和DELETE语句有关的更新操作,在这些情况下,返回值是命令影响的行数。
对于其他类型的语句,诸如SET或CREATE语句,则
返回值为-1;如果发生回滚,返回值也为-1。
语法:
publicoverrideObjectExecuteNonQuery(
例如,创建一个SqlCommand,然后使用ExecuteNonQuery方法执行(queryString代表Transact-SQL语句如,UPDATE、INSERT或DELETE),代码如下:
privatestaticvoidCreateCommand(stringqueryString,stringconnectionString
{
SqlConnectionconnection=newSqlConnection(connectionString
SqlCommandcommand=newSqlCommand(queryString,connection;
command.Connection.Open(;
command.ExecuteNonQuery(;//执行Command命令
ExecuteReader方法
ExecuteReader方法通常与查询命令一起使用,并且返回一个数据阅读器对象
SqlDataReader类的一个实例。
数据阅读器是一种只读的、向前移动的游标,客户端代码滚动游标并从中读取数据(下节将具体介绍数据阅读器)。
如果通过ExecuteReader方法执行一个
更新语句,则该命令成功地执行,但是不会返回任何受影响的数据行。
例如,创建一个SqlCommand,然后应用ExecuteReader(方法来创建DataReader对象来对数据源进行读取,代码如下:
SqlCommandcommand=newSqlCommand(queryString,connection;
//通过ExecuteReader方法创建DataReader对象
SqlDataReaderreader=command.ExecuteReader(;
while(reader.Read(
{
ConSQLe.WriteLine(String.Format("{0}",reader[0];
}
•ExecuteScalar方法
执行查询,并返回查询所返回的结果集中第一行的第一列
语法:
publicoverrideObjectExecuteScalar(
如果只想检索数据库信息中的一个值,而不需要返回表或数据流形式的数据库信息。
例如,只需要返回COUNT(*、SUM(grade或AVG(grade等聚合函数的结果,那么Command对象的ExecuteScalar方法就很有用。
如果在一个常规查询语句当中调用该方法,则只读取第一行第一列的值,而丢弃所有其他值。
例如,使用SqlCommand对象的ExecuteScalar方法来返回表中记录的数目(SELECT语句使用Transact-SQLCOUNT聚合函数返回指定表中的行数的单个值),代码如下:
stringsqlstr="SELECTCount(*FROMtbStudent";
SqlComandstudentCMD=newSqlCommand(sqlstr,connection;
//将返回的记录数目强制转换成整型
Int32count=(Int32studentCMD.ExecuteScalar(;
SqlCommand对象的应用
示例6.2使用Command对象查询数据(源程序详见光盘中例6.2
本示例主要讲解在ASP.NET应用程序中如何使用SqlCommand对象查询数据库中的记录。
执行程序,在“姓名”文本框中输入“张三”,并单击“查询”控件,将会在界面上显示查询结果,如图所示:
图6.1使用Command对象查询数据
程序实现的步骤:
(1、新建一个网站,默认主页为Default.aspx。
(2、打开Default.aspx文件,在Default.aspx界面上添加一个TextBox控件和一个Button控件分别命名为txtName和btnSelect,并将Button的Text属性设为“查询”,然后再添加一个Gridiew控件命名为gvStudent.
(3、在Web.Config文件中配置数据库连接字符串,在下的子配置节添加连接字符串。
其代码如下:
providerName="System.Data.SqlClient"
connectionString="server=.;database=dbChooseCourse;uid=ChooseCourse;pwd=ChooseCourse"name="sqlconn"/>
(4、在Default.aspx页中,使用ConfigurationManager类获取配置节的连接字符串。
其代码如下:
//自定义数据库连接函数
publicSqlConnectionGetConnection(
{
//获取Web.Config文件中的连接字符串
StringmyStr=System.Configuration.ConfigurationManager.
ConnectionStrings["sqlconn"].ToString(;
SqlConnectionmyConn=newSqlConnection(myStr;
returnmyConn;
}
(5、在【查询】按钮的Click事件下,使用Command对象查询数据库中的记录,调用GetConnection(函数进行数据库连接,并调用BindStudent(函数进行数据的绑定。
其代码如下:
protectedvoidbtnSelect_Click(objectsender,EventArgse
BindStudent(;//调用数据绑定函数
}
//自定义数据绑定函数
protectedvoidBindStudent(
{
SqlConnectionmyConn=GetConnection(;
myConn.Open(;
stringname=txtName.Text.ToString(.Trim(;//获取文本框的内容即学生姓名
stringsqlStr="select*fromtbStudentwheresname='"+name+"'";//SQL查询语句SqlCommandmyCmd=newSqlCommand(sqlStr,myConn;/创/建Command对象SqlDataAdaptermyDa=newSqlDataAdapter(myCmd;
DataSetmyDs=newDataSet(;
myDa.Fill(myDs;
if(myDs.Tables[0].Rows.Count>0
{
gvStudent.DataSource=myDs;
gvStudent.DataBind(;
}
else
{
Response.Write("";
}
myDa.Dispose(;
myDs.Dispose(;
myConn.Close(;
}
实例6.3使用Command对象添加数据(源程序详见光盘中例6.3
本示例主要讲解在ASP.NET应用程序中如何使用SqlCommand对象如何向数据库中添加数据。
执行程序,示例运行结果,如图6.2所示;在文本框中,输入学生的正确信息,单击【添加学生信息】按钮,将学生信息提交到数据库中,运行结果如图6.3所示:
图6.2示例运行结果图图6.3添加记录后的结果图
程序实现的步骤:
(1)、创建一个新的网站,默认主页为Default.aspx;在Default.aspx页面中分别添加5个TextBooks控件,分别命名为:
txtSno,txtSname,txtClass,txtSdept,txtPwd,分别用来填写学号、姓名、班级、系别、密码,其中txtPwd控件的
TextMode属性设为Password;然后在表格中的性别一栏添加两个RadioButton控件分别命名为radMan和radWoman,将这两个控件的GroupName设为radSex,接着将radMan的Text属性设为“男”,radWoman的Text属性设为“女”,radMan的Checked属性设为True。
继续添加一个Button控件,命名为:
btnAdd;和一个GridView控件,命名为:
gvStudent。
(2)、在【添加】按钮的Click事件下,使用Command对象将文本框中的值添加到数据库中,并将其显示出来。
其代码如下:
protectedvoidbtnAdd_Click(objectsender,EventArgse{
SqlConnectionmyConn=GetConnection(;stringssex;
if(radMan.Checked
{
ssex="男";
}
else
{
ssex="女";
try
{
stringsqlStr="insertintotbStudent(sno,sname,ssex,sclass,sdept,spwdvalues('"
+txtSno.Text.ToString(.Trim(+"','"
z+txtSname.Text.ToString(.Trim(+"','"+ssex++txtClass.Text.ToString(.Trim(+"','"
+txtSdept.Text.ToString(.Trim(+"','"
+txtPwd.Text.ToString(.Trim(+"'";//SQL插入语句
SqlCommandmyCmd=newSqlCommand(sqlStr,myConn;myConn.Open(;
myCmd.ExecuteNonQuery(;//使用SqlCommand对象插于BindStudent(;
}
catch
{
Response.Write("添加失败!
";
}finally
{
myConn.Close(;
}
}
实例6.4使用Command对象修改数据(源程序详见光盘中例6.4
本示例主要讲解在ASP.NET应用程序中如何使用SqlCommand对象如何修改数据库中的数据。
执行程序,示例运行结果,如图6.4所示;在文本框中,输入需要修改学生的正确信息,单击【保存】按钮,修改数据库中原有的信息,运行结果如图6.5所示:
程序实现的步骤:
(1)、创建一个新的网站,默认主页为Default.aspx;在Default.aspx页面中分别添加5个TextBooks控件,分别命名为:
txtSno,txtSname,txtClass,txtSdept分别用来填写学号、姓名、班级、系别;然后在表格中的性别一栏的单元格中添加两个RadioButton控件分别命名为radMan和radWoman,将这两个控件的GroupName设为radSex,接着将radMan的Text属性设为“男”,radWoman的Text属性设为
“女”,radMan的Checked属性设为True。
继续添加两个个Button控件,命名为:
btnSave,btnReturn;和一个Gridview控件,命名为:
gvStudent。
(2)、在【保存】按钮的Click事件下,使用Command对象将文本框中的值替换数据库中以后的值,并将其显示出来。
其代码如下:
protectedvoidbtnSave_Click(objectsender,EventArgse
{
SqlConnectionmyConn=GetConnection(;
stringsno=txtSno.Text.ToString(.Trim(;
stringsname=txtSname.Text.ToString(.Trim(;
stringssex;
if(radMan.Checked
{
ssex="男";
}
else
{
ssex="女";
}
stringsclass=txtSclass.Text.ToString(.Trim(;
stringsdept=txtSdept.Text.ToString(.Trim(;
try
{
stringsqlStr="updatetbStudentsetsname='"
+sname+"',ssex='"
+ssex+"',sclass='"+sclass+"',sdept='"
+sdept+"'wheresno='"+sno+"'";
SqlCommandmyCmd=newSqlCommand(sqlStr,myConn;myConn.Open(;
myCmd.ExecuteNonQuery(;
BindStudent(;
}
catch
{
Response.Write("修改失败";
}
finally
{myConn.Close(;
}
实例6.5使用Command对象删除数据(源程序详见光盘中例6.5)
本示例主要讲解在ASP.NET应用程序中如何使用SqlCommand对象如何删除数据库中的数据。
执行程序,示例运行结果,如图6.6所示;单击学号为082201的【删除】按钮,运行结果如图6.7所示:
图6.6示例运行结果图图6.7删除记录后的结果图
程序实现的步骤:
(1)、创建一个新的网站,默认主页为Default.aspx;在Default.aspx页面中添加一个Gridview控件,命名为:
gvStudent。
(2)、单击GridView控件右上方的控件,在弹出的快捷菜单中选择“编辑列”选项,如图6.8所示。
图6.8选择“编辑列”选项图6.9“字段”对话框
(3)、在“字段”对话框中选中一个“TemplateField,”并将其HeaderText命名为“操作”,如图6.9所示。
(4)、在“编辑模板”对话框中,添加一个Button控件,将其命名为“btnDel,”用
CommandArgument属性绑定sno,用CommandName命名为“del,”如图6.10所示gvStudent具体代码如下:
CommandArgument='<%#Eval("sno"%>'CommandName="del"/>
图6.10“编辑模板”对话框
(4)、在【删除】按钮的Click事件下,使用Command对象更新数据库中的值,并将其显示出来。
其代码如下:
protectedvoidgvStudent_RowCommand(objectsender,GridViewCommandEventArgse{
if(e.CommandName.ToString(.Trim(=="del"//判断CommandName是否为“del”
{
SqlConnectionmyConn=GetConnection(;myConn.Open(;
stringsno=e.CommandArgument.ToString(.Trim(;
stringsqlStr="deletefromtbStudentwheresno='"+sno+"'";
//删除指定学生的SQl语句
SqlCommandmyCmd=newSqlCommand(sqlStr,myConn;myCmd.ExecuteNonQuery(;
myConn.Close(;
BindStudent(;//重新绑定学生数据
}
}