当前位置:首页 > 数据库访问方法
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·
共分享92篇相关文档