ExecuteNonQuery()

在看程序的过程中,遇到此函数,从网上查了查看到比较详细的讲解,现放到这里以供参考。

下面我们将详细讲解如何在

Page_Load()

中对数据库的增加、删除、修改,最后

我们再来总结一下

ExecuteNonQuery(),ExecuteScalar(),ExecuteReader

的用

法:

 

 

1

 

增加新的记录

 

 

 

 

private

 

void

 Page_Load(

object

 sender, System.EventArgs e)

{

MyConnection.Open();’打开数据库

 

MyCommand1.CommandText =

"insert into admin values(‘aaddq‘,‘as‘,‘ss‘)";

MyCommand1.Connection = MyConnection;

MyCommand1.ExecuteNonQuery();’由于增加了一条记录,所以返回1

//或者MyCommand1.ExecuteReader();先增加一条记录,然后返回一个System.Data.OleDb.OleDbDataReader类型的对象,该对象为:EOF

//或者MyCommand1. ExecuteScalar();先增加一条记录,返回未实列化的对象

 

MyConnection.Close();

}

 

2

 

删除现有数据

 

 

 

 

private

 

void

 Page_Load(

object

 sender, System.EventArgs e)

{

MyConnection.Open();’打开数据库

 

MyCommand1.CommandText =

"delete * from admin"

;

MyCommand1.Connection = MyConnection;

MyCommand1.ExecuteNonQuery();’由于删除了

n

条记录,所以返回

n

//

或者

MyCommand1.ExecuteReader();

先删除

n

 

 

条记录,然后返回一个

System.

Data.OleDb.OleDbDataReader

类型的对象,该对象为

:EOF

//

或者

MyCommand1. ExecuteScalar();

先删除

n

条记录,返回未实列化的对象

 

MyConnection.Close();

}

 

3

 

修改现有数据

 

private

 

void

 Page_Load(

object

 sender, System.EventArgs e)

{

MyConnect

ion.Open();’打开数据库

 

MyCommand1.CommandText =

"update admin set admin_code=’212’,Admin_p

wd=’43’ where admin_code=’23’"

;

MyCommand1.Connection = MyConnection;

MyCommand1.ExecuteNonQuery();’由于修改了1条记录,所以返回n

//

或者

MyCommand1.ExecuteReader();

先修改了

1

条记录,然后返回一个

Syste

m.Data.OleDb.OleDbDataReader

类型的对象,该对象为

:EOF

//

或者

MyCommand1. ExecuteScalar();

先修改了

1

条记录,返回未实列化的对

 

MyConnection.Close();

}

三、关于

MyCommand

ExecuteNonQuery(),ExecuteScalar(),ExecuteReader

方法的区别

:

1

ExecuteNonQuery():

执行

SQL

,返回一个整型变量,如果

SQL

是对数据库的

记录进行操作,那么返回操作影响的记录条数,如果是

 SQL="CREATE TABLE

LookupCodes (code_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED,

code_desc varchar(50) NOT NULL)"

那么在表创建成功后该方法返回

 

1

 

例如:

 

private void Page_Load(object sender, System.EventArgs e)

{

MyConnection.Open();’打开数据库

 

MyCommand1.CommandText = "CREATE TABLE LookupCodes (code_id smallint

IDENTITY(1,1) PRIMARY KEY CLUSTERED, code_desc varchar(50) NOT NULL)"

 

MyCommand1.Connection = MyConnection;

MyCommand1.ExecuteNonQuery();’首先建立一个

LookupCodes

表,然后返回

-1

//

或者

MyCommand1.ExecuteReader();

首先建立一个

LookupCodes

表,

然后返回

一个

System.Data.OleDb.OleDbDataReader

类型的对象,该对象为

:EOF

//

或者

MyCommand1. ExecuteScalar();

首先建立一个

LookupCodes

表,返回未

实列化的对象

 

MyConnection.Close();

 

2

 ExecuteScalar()

:执行

SQL

,(如果

SQL

是查询

Select

)返回查询结果的

第一行第一列,如果(如果

SQL

不是查询

Select

)那

 

么返回未实列化的对象,

因为对象未实列化,

所以返回结果不能

ToString(),

不能

Equals(null)

也就是

说返回结果没有任何作用

 

3

 executeReader

方法执行

SQL

,(如果

SQL

是查询

Select

)返回查询结果的

集合,

类型是

 System.Data.OleDb.OleDbDataReader

你可以通过此结果,

获取

查询的数据。如果(如果

SQL

不是查询

Select

)那么

 

返回一个没有任何数据的

System.Data.OleDb.OleDbDataReader

类型的集合

(EOF)

 

四、总结:

 

ASP.Net

中对于数据库的操作方法很多,

要实现统一个目标不同的人可能会采取

不同的方法,

就好像在

ASP

中有的人喜欢用

RS.ADDNEW

有的人喜

 

欢用”Insert

Into”,

主要是看个人的习惯,

当然在性能上不同的方法可能会存在较大的差别,

 

这个只能靠我们在平常的学习中一点一滴的积累经验的。另外顺便说一下

 

 

 

ASP.Net

页提供类似如下方式的操作方法:

 

OleDbCommand2.Parameters(

"au_id"

).Value = TextBox1.Text

OleDbCommand2.Parameters(

"au_lname"

).Value = TextBox2.Text

OleDbCommand2.Parameters(

"au_fname"

).Value = TextBox3.Text

OleDbCommand2.Parameters(

"phone"

).Value = TextBox4.Text

OleDbCommand2.Parameters(

"address"

).Value = TextBox5.Text

OleDbCommand2.Parameters(

"city"

).Value = TextBox6.Text

OleDbCommand2.Parameters(

"st"

).Value = TextBox7.Text

OleDbCommand2.Parameters(

"zip"

).Value = TextBox8.Text

OleDbCommand2.Parameters(

"contract"

).Value = CheckBox1.Checked

cmdresults = OleDbcommand2.ExecuteNonQuery()

posted @ 2013-02-18 09:47  liuxixi  阅读(380)  评论(0编辑  收藏  举报