数据库访问方法 联系客服

发布时间 : 星期一 文章数据库访问方法更新完毕开始阅读696b28610b1c59eef8c7b44c

if (conn.State == ConnectionState.Open) conn.Close(); } } }

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) {

string x;

SqlDataReader dr; // 新建DataReader对象 // 新建数据库连接conn,连接到SQL SERVER数据库 System.Data.SqlClient.SqlConnection conn = new SqlConnection(); conn.ConnectionString =

ConfigurationManager.ConnectionStrings[\

// 新建Command对象

SqlCommand cmd = new SqlCommand(); cmd.Connection = conn;

cmd.CommandText = \ cmd.CommandType = CommandType.Text; // 添加查询参数对象,并给参数赋值

SqlParameter para = new SqlParameter(\ para.Value = DropDownList1.SelectedValue; cmd.Parameters.Add(para);

// 打开conn连接,检索authors表的state字段 try { }

catch (SqlException sqlException) { { } }

if (conn.State == ConnectionState.Open)

conn.Close();

Response.Write(sqlException.Message);

}

// 显示连接异常信息

finally

conn.Open();

// 打开数据库连接

// 将检索的记录行填充到dr中 // 输出DataReader记录 //关闭DataReader对象 //显示输出结果

dr = cmd.ExecuteReader(); x = showDataReader(dr); dr.Close(); Label2.Text = x;

·228·

程序分析:

(1)在Page_Load事件中,创建SqlConnection对象,建立数据库连接。再创建SqlCommand对象,并设置查询州名的SQL语句。然后打开连接,执行查询,将查询结果返回给SqlDataReader对象,再将SqlDataReader绑定到下拉列表框对象中,最后关闭连接。

(2)在下拉列表框对象的SelectedIndexChanged事件中,使用了带参数的查询,根据选择的州名,获取该州的所有作者记录返回给SqlDataReader对象。然后调用showDataReader()方法,以HTML表格的形式输出显示。最后关闭连接。

从上面的程序可以看出,在处理数据的过程中,连接始终保持,直到绑定结束或显示完成后才关闭连接。程序运行后效果如图6.34所示。

图6.34 用SqlCommand和SqlDataReader对象查询数据库

6.4.5 利用ADO.NET更新数据库

使用ADO.NET更新数据库,通常可采用两种方法。 (1)直接用Command对象来执行SQL语句。

(2)用DataAdapter和DataSet对象来实现。 下面分别介绍这两种实现方法。 1.直接用Command对象实现更新

用Command对象执行SQL语句或存储过程来实现数据更新,这种方法直接操作数据源,无须构建ADO.NET对象来保存数据,因此效率高。

使用Command对象更新数据库,需先创建Command对象并设置要执行SQL命令,然后调用其ExecuteNonQuery方法来实现更新。这种方式的更新是直接对数据源(物理表)进行的。

使用Command对象更新数据源的基本操作步骤如下。 (1)连接数据库。

(2)创建Command对象,设置CommandText属性。 (3)打开连接。

(4)调用Command对象的ExecuteNonQuery方法执行SQL更新操作。

(5)关闭连接。

【例6.15】 利用OleDbCommand对象更新数据库,实现用户注册。 本例访问网站App_Data文件夹中的ACCESS数据库“bbs.mdb”,设计注册页,利用

·229·

OleDbCommand对象执行SQL命令,将注册信息添加到RegUser表中,要求注册的用户不能重名,否则应提示重名错误。

RegUser表的结构如下所示: 字段名 UserID NickName PassWord sex birthdate role 字段类型 自动编号 文本 文本 是/否 日期/时间 文本 允许空 否 否 否 否 是 是 说 明 用户唯一标识,主键,自动增量 登录名 密码 性别 生日 角色

(1)在Visual Studio 网站中新建网页example6-15.aspx,放入一个“确定”按钮和若干个Label、TextBox、RadioButtonList控件,用于输入注册信息。

(2)编写“确定”按钮的单击事件代码,完成检查是否重名,若无重名则插入用户记录,提示成功消息。否则,提示重名信息。

本例example6-15.aspx.cs部分程序代码如下。

protected Boolean chkUserName(string username) {

Boolean result; result = false;

OleDbDataReader dr;

// 新建DataReader对象

// 新建数据库连接conn,连接到Access数据库bbs

System.Data.OleDb.OleDbConnection conn = new OleDbConnection(); conn.ConnectionString =

ConfigurationManager.ConnectionStrings[\

// 新建OleDbCommand对象

OleDbCommand cmd = new OleDbCommand(); cmd.Connection = conn;

cmd.CommandText = \ cmd.CommandType = CommandType.Text; // 添加查询参数对象,并给参数赋值

OleDbParameter para = new OleDbParameter(\ para.Value = username; cmd.Parameters.Add(para);

// 打开conn连接,检索RegUser表的NickName字段 try {

conn.Open();

// 打开数据库连接

// 将检索的记录行填充到OleDbDataReader对象dr中

//检测重名

·230·

dr = cmd.ExecuteReader(); if (dr.HasRows) result = true; dr.Close(); }

catch (OleDbException OleDbException) {

Response.Write(OleDbException.Message); }

// 显示连接异常信息

finally {

if (conn.State == ConnectionState.Open) conn.Close(); }

return result; } }

protected void btnRegister_Click (object sender, EventArgs e) {

if (chkUserName(tbxNickName.Text)) Response.Write(\重名,请重新注册\ else

{ // 新建数据库连接conn,连接到Access数据库bbs

System.Data.OleDb.OleDbConnection conn = new OleDbConnection(); conn.ConnectionString =

ConfigurationManager.ConnectionStrings[\

//关闭OleDbDataReader对象

//若有记录,即重名

// 新建OleDbCommand对象

OleDbCommand cmd = new OleDbCommand(); cmd.Connection = conn;

cmd.CommandText = \

Values(?,?,?,?)\

cmd.CommandType = CommandType.Text; // 添加查询参数对象,并给参数赋值

cmd.Parameters.Add(new OleDbParameter(\ cmd.Parameters.Add(new OleDbParameter(\ cmd.Parameters.Add(new OleDbParameter(\ cmd.Parameters.Add(new OleDbParameter(\ cmd.Parameters[\ cmd.Parameters[\ cmd.Parameters[\

·231·