注意:本文暂时不讲解 数据库 的数据调出和显示,因为他涉及的东西比较多,所以我们将另外详细讲解。本文主要要讲的是数据库的增加、删除、修改。

一、定义 OleDbCommand 类型变量: MyCommand

要对数据库进行增加、删除、修改的操作我们还需要根据 MyConnectio 的类型定义一个 OleDbCommand 或者 SqlCommand 对象(请注意如果 MyConnection OleDbConnection 类型,那么只能用 OleDbCommand ;如果 MyConnection SqlConnection 类型,那么那么只能用 SqlCommand 。这里假设 MyConnection OleDbConnection 类)。(方法一)你可以象拖放 MyConnection 一样拖放一个 OleDbCommand ,并命名为 MyCommand 。(方法二)在 ( 关联文件 ).CS 文件中 protected System.Data.OleDb.OleDbConnection MyConnection; 下面手动添加:
protected System.Data.OleDb.OleDbCommand MyCommand;
private void InitializeComponent() this.MyConnection = new System.Data.OleDb.OleDbConnection(); 的下一行下面手动添加:
this.MyCommand = new System.Data.OleDb.OleDbCommand();
即可完成对 MyCommand 的定义
说明: MyCommand 的作用是用来执行 SQL 命令


二、利用定义的 MyConnectio MyCommand 对数据库进行增加、删除、修改

首先我们需要连接并打开一个数据库(关于数据库的连接和打开的操作请察看我们以前的文章)。打开数据库: MyConnectio.Open();
然后我们需要给 MyCommand 指定要执行的 SQL 命令
: MyCommand.CommandText = "delete from admin";
接着我们需要给 MyCommand 指定数据源(对那个数据库执行 SQL 命令): MyCommand.Connection = MyConnection; 然后我们执行 MyCommand 命令即可 : MyCommand. ExecuteNonQuery(); 如果我们在执行还有 "delete from admin"; 后需要接着执行 insert into admin (Admin_Code,Admin_Pwd) values( aa , bb ) ”,则我们只要再次指定 MyCommand 指定要执行的 SQL 命令 : MyCommand.CommandText = insert into admin (Admin_Code,Admin_Pwd) values( aa , bb ) ”,然后执行 MyCommand. ExecuteNonQuery(); 即可。(由于数据库未关闭,所以我们不需要也不可以再次 MyConnectio.Open(); ,同理由于没有改变 MyCommand 的数据源所以我们也没有必要再次指定 MyCommand.Connection = MyConnection;

下面我们将详细讲解如何在 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)
{
MyConnection.Open();
’打开数据库
MyCommand1.CommandText = "update admin set admin_code=
212 ,Admin_pwd= 43 where admin_code= 23 ";
MyCommand1.Connection = MyConnection;
MyCommand1.ExecuteNonQuery();
’由于修改了 1 条记录,所以返回
n
//
或者 MyCommand1.ExecuteReader(); 先修改了 1 条记录,然后返回一个 System.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()
这个方法在我们以后的文章中,我们会慢慢给大家讲解的,下一章我们要讲的是如何从数据库中读取数据

前面我们已经说了如何操作 数据库 ,但几乎全部是通过 OleDbCommand OleDbDataReader 来做的,这次我们说说如何通过 OleDbDataAdapter 来操作数据库!关于 OleDbDataAdapter 的用法实际上我们在以前已经讲过了,由于 OleDbDataAdapter DataSet 和数据源之间建立联系的一个桥梁,而 DataSet 用于对单层数据、 XML 数据和关系数据进行存储、远程处理和编程!。
我们曾经讲过利用 Command 来对数据库进行增加、删除和修改操作,但是我们利用 DataSet DataAdapter 能够更加方便的对数据库进行操作,基本是我们可以认为 DataSet 是专门为 WEB 而设计的,这也是 ADO.NET ADO 的一个重要的区别。
下面是 DataSet SQL 数据的的关系图, 通过这个图我们可以看出 DataSet DataAdapter 以及 SQL 数据库的关系。


下面我们来讲解一下如何利用 DataSet DataAdapter 来操作上据库
MyConnection.Open(); //
打开数据库,请参考前面文章的内容
MyCommand.Connection = MyConnection; //
设置 Command ,请参考前面文章的内容

MyCommand. CommandText =
select * from admin ; // 设置 Command ,参考前面文章的内容
OleDbDataAdapter MyDataAdapter = new OleDbDataAdapter(); //
定义 OleDbDataAdapte 对象
MyDataAdapter.SelectCommand = MyCommand; //
设置 OleDbDataAdapte 对象的 SelectCommand 属性
System.Data.DataSet MyDataSet = new System.Data.DataSet(); //
定义 DataSet
MyDataAdapter.Fill(MyDataSet,"admin"); //
通过 OleDbDataAdapte 对象的 SelectCommand 属性填充
MyDataSet
MyConnection.Close(); //
关闭数据库

整个过程分以下几步:
1
.建立数据库连接(打开数据库,请参考前面文章的内容)

2
.建立 OleDbDataAdapter 对象!

3
.实例化 OleDbDataAdapter 对象!
4
.建立一个 DataSet 对象,执行 SQL 语句得到的表添加到其中

5
.关闭数据库连接

通过上面的步骤我们就可以使用 DataBind DataSet 中的数据绑定到特定的控件上了!(下一章我们将讲解如何邦定数据库)

我们说过但是我们可以利用 DataSet DataAdapter 能够更加方便的对数据库进行操作,如何通过 OleDbDataAdapter 来执行数据库的操作的,我们只需要对 DataSet 中的数据进行增加、删除、修改等操作,然后在将 DataSet 提交给数据库即可
//
利用利用 DataSet DataAdapter 操作数据库
public Boolean DoDB()
{
MyConnection.Open(); //
打开数据库,请参考前面文章的内容
MyCommand.Connection = MyConnection; //
设置 Command ,请参考前面文章的内容

MyCommand. CommandText =
select * from admin ; // 设置 Command ,参考前面文章的内容
OleDbDataAdapter MyDataAdapter = new OleDbDataAdapter(); //
定义 OleDbDataAdapte 对象
MyDataAdapter.SelectCommand = MyCommand; //
设置 OleDbDataAdapte 对象的 SelectCommand 属性
System.Data.DataSet MyDataSet = new System.Data.DataSet(); //
定义 DataSet
MyDataAdapter.Fill(MyDataSet,"admin"); //
通过 OleDbDataAdapte 对象的 SelectCommand 属性填充 MyDataSet

OleDbCommandBuilder MyCommandBuild = new OleDbCommandBuilder(MyDataAdapter);// 关联 DataSet 和数据库的操作的,必不可少
foreach(DataRow dr in MyDataSet.Tables["Admin"].Rows)
{
if(dr["Admin_Code"].ToString().Trim().Equals("a"))
{
dr.Delete(); //
删除 DataSet 中的行
}
}
MyDataSet.Tables["Admin"].Rows[0][0] = "ss";//
更新 DataSet 中第一行第一列的值
string [] dd = new String[3]{"a","b","v"};
MyDataSet.Tables["Admin"].Rows.Add(dd);//
增加一行
MyDataAdapter.Update(MyDataSet,"Admin");//
DataSet 中” Admin ”表中的数据提交给数据库,完成数据库的更新
MyConnection.Close();//
关闭数据库
}

这个程序和我们前面用到的利用 Command delete insert update 例程是执行同样的功能的,我这里改成了用 MyDataAdapter 来达到同样的效果!

要通过 MyDataAdapter 执行对数据库的操作,我们要有下面的几步:

1 建立数据库连接 MyConnection
2
实例化 OleDbDataAdapter 对象!

3
建立一个 DataSet 对象,并把执行 select 语句得到的记录添加到其中

4
建立 OleDbCommandBuilder 对象! 并让它与我们前面的 OleDbDataAdapter 对象关联!语句如下:
OleDbCommandBuilder MyCommandBuild = new OleDbCommandBuilder(MyDataAdapter);
5
DataSet 中包含表的特定记录进行增加、删除、修改

6 执行 OleDbDataAdapter 对象的 Update 命令更新数据库,语句如下: MyDataAdapter.Update(ds,"notes");
7
关闭数据库连接

总结:
DataSet
ADO.NET 中非常重要的内容,也是 ADO.NET ADO 的区别的一个重要表现,特别适合成批的数据操作,也是数据棒定的重要来源。 OleDbDataAdapter DataSet 和数据源之间建立联系的一个桥梁,要熟练的使用 DataSet 我们需要熟练的掌握 OleDbDataAdapter 。下一章我们将讲述 Data

对于用过 beta2 版的网友来说,学习本文的内容将会是十分的简单,因为 .net 正式版和 beta2 版的差别不大,所以对于 beta2 中的程序你几乎可以不作修改(或者只做少量修改)就可以再正式版中正常的运行。
在这里我们来讲一下怎样打开 数据库 ,我们不赞同利用写字本或者 editplus 等文本编辑器来编写 asp.net ,所以本文的讲述全是在 VS.NET 开发工具上的。
建立一个新的数据库连接,首先我们从工具箱工双击 OleDbConnection 或者 双击 SqlConnection 如图所示

 

注意: OleDbConnection SqlConnection 的区别在于: OleDbConnection 适合于连接任何类型的数据库(如 Oracle SQL Server ACCESS 等等),而 SqlConnection 是专门用来连接 SQL Server(MS SQL) 数据库的,据说效率比 OleDbConnection 高。如果你的数据库是 MS SQL 那么你就双击 SqlConnection 吧,其他数据库就用 OleDbConnection 吧。同样的道理 SqlDataAdapter,SqlCommand 是专门用于 (MS SQL) 数据库的,而 OleDbDataAdapter, OleDbCommand 适用于所有的数据库,如果你双击的是 SqlConnection ,那么在今后的数据库操作中你只能用 SqlDataAdapter,SqlCommand ,同样的道理如果你双击的是 OleDbConnection ,那么在今后的数据库操作中你只能用 OleDbDataAdapter, OleDbCommand 。在这里我们选择 OleDbConnection
当我们双击 OleDbConnection 后在窗口的下端将会出现一个名为 oleDbConnection1 的数据库连接源


我们可以在属性窗口改变 oleDbConnection1 的名称为 MyConnection,

连接数据库在关键的步骤为:从上图中的 ConnctionStr 中选择 < 新建连接… > 然后将会弹出如下窗口:


选择好数据库的类型 “下一步”后 选择数据库的正确位置 如下图


(测试连接 成功后)单击确定,然后(双击编辑窗口任意空白位置)打开对应的 cs 文件,将会看到程序中自动加入了
protected System.Data.OleDb.OleDbConnection MyConnection;
代码
而且在 private void InitializeComponent() 中加入了
this.MyConnection = new System.Data.OleDb.OleDbConnection();
//
// MyConnection
//
this.MyConnection.ConnectionString = @"Provider=SQLOLEDB.1;Persist Security
Info=False;User ID=sa;Initial Catalog=house;Data Source=CYH;Use Procedure
for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=CYH;Use
Encryption for Data=False;Tag with column collation when possible=False";
//
现在要打开数据库变得很简单了,你只要使用
MyConnection.Open(); //
数据库就打开了
MyConnection.Close();//
关闭数据库
如你可以在 private void Page_Load(object sender, System.EventArgs e) 打开数据库
private void Page_Load(object sender, System.EventArgs e)
{
MyConnection.Open();
//
在此处放置用户代码对数据库进行增加、删除、修改、查询等操作
MyConnection.Close();
}