实验六 ADO.NET数据库访问技术(一)
一. 目的和要求
掌握使用ADO。NET访问SQL Server数据库.掌握使用ADO.NET进行增加、删除、修改数据的方法。
二.实验课时
2课时。
三.实验内容
1. 编写程序,创建一个使用DataGrid控件和DataReader显示位于”pubs”数据库中的”employee”表中的所有记录的Web应用程序。
ps:这个在实验课上用鼠标点点点就完成了,忘记截图了,叙述一下大体逻辑:
{
1、添加GridView控件
2、绑定数据源:数据库->sql->选择连接->数据库名->表格//大体上是这样的
3、运行调试
}
2. 编写程序,创建一个使用SqlCommand对象对pubs数据库中的”employee”表进行增加、删除和修改记录的Web应用程序。
3. 编写程序,创建一个文本框接收用户输入信息,在’pubs’数据库中的“employee“表中根据用户输入的信息(emp_id)查找相应的记录。
4. 上机调试本章的例题。
//代码看似多,其实不多,主要是那些注释,为了完成王老师要求的注释风格,就随便添加了一些,可以不抄
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
// <summary>
/// 保存连接
/// </summary>
SqlConnection con;
/// <summary>
/// 查询数据
/// </summary>
void select()
{
string strtxt = "select * from employee where emp_id = 'EDF12345M'";
sql = new SqlCommand(strtxt, con);
SqlDataReader reader = sql.ExecuteReader();
if(reader.Read())
Response.Write(reader[0] + "\t" + reader[2]);
con.Close();
}
/// <summary>
/// 插入数据
/// </summary>
void insert()
{
string strtxt = "insert into employee values('EDF12345M','liuqian','M','qianqian','8','123','1231','1992-09-04 00:00:00.000')";//正常情况下可以成功,只可惜老师对主键的约数太强了,根本插不进去,万恶的主键,不过为了实验效果我这里就假装值已经插进去了
SqlCommand sql = new SqlCommand(strtxt,con);
con.Open();
sql.ExecuteReader();
con.Close();
}
/// <summary>
/// 删除数据
/// </summary>
void delete()
{
string strtxt = "delete from employee where emp_id='EDF12345M'";
sql = new SqlCommand(strtxt, con);
con.Open();
sql.ExecuteReader();
con.Close();
}
/// <summary>
/// 修改数据库内容
/// </summary>
void update()
{
//UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
string strtxt = "update employee set fname='xiaoqian' where emp_id='EDF12345M'";
SqlCommand sql = new SqlCommand(strtxt,con);
con.Open();
sql.ExecuteReader();
con.Close();
}
/// <summary>
/// 测试用SqlCommend对数据库进行增删改查
/// </summary>
/// <param name='sender'> Sender. </param>
/// <param name='args'> Arguments. </param>
protected void btn_test_Click(object sender, EventArgs e)
{
con = new SqlConnection("Server=.;Database=pubs;Integrated Security=SSPI;");
select();
insert();
select();
update();
select();
delete();
select();
}
/// <summary>
/// 查询指定的数据
/// </summary>
/// <param name='sender'> Sender. </param>
/// <param name='args'> Arguments. </param>
protected void btn_select_Click(object sender, EventArgs e)
{
string command = "select * from employee where emp_id = '"+ TextBox1.Text +"'";
SqlDataAdapter adp = new SqlDataAdapter(command, ConnectionString);
DataSet ds = new DataSet();
adp.Fill(ds, "employee");
int num = ds.Tables["employee"].Columns.Count;
string tmp = "";
for (int i = 0; i < num; ++i)
{
tmp += ds.Tables["employee"].Rows[0][i].ToString() + '\t';
}
Response.Write(tmp);
con.Close();
}
}
5. 实验思考题:
1) ADO.NET对象模型有哪些主要组件?
Connection对象: 与数据源建立连接。
Command 对象:对数据源执行SQL命令并返回结果。
DataReader对象: 读取数据源的数据,数据从头到尾依次读出。
DataAdapter对象:对数据源执行操作并返回结果,写入DataSet。
DataSet对象:服务器内存中的数据库
DataView对象: 用于显示DataSet中的数据
2) ADO.NET中的什么对象支持数据的离线访问?
DataSet对象 但是DataView的数据源可以是DataSet,这个有点纠结