實驗六 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,這個有點糾結