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()