** 前面的文章地址: **
** http://dev.csdn.net/develop/article/26/26246.shtm **
** http://dev.csdn.net/develop/article/26/26480.shtm **
** http://dev.csdn.net/develop/article/26/26481.shtm **
** 这次我们用实例演示 DataReader 的基本应用,当然同时包含 Command 以及 Connection 的基本操作。通过这个实例的学习我们能处理一般的数据库系统了。 **
** WinForm ** ** 的个人通讯录 ** ( vs.net2003 + sql server2000 ) ** **
1. 建立数据库(前面的文章已经讨论)
2. 启动 Vs.net 建立 contract 工程并设计如下界面:
其中重要控件属性列表如下:
控件类型
|
Text
|
Name
|
其他
---|---|---|---
ListView
|
|
listView
|
显示模式为 details , FullRowSelect 为 ture
Button
|
确定
|
btnOK
|
默认 enable 为 false
Button
|
重填
|
btnRE
|
默认 enable 为 false
Button
|
添加联系人信息
|
btnAdd
|
Button
|
修改选中联系人信息
|
btnEdit
|
Button
|
删除选中联系人信息
|
btnDel
|
TextBox
|
|
txtName
|
默认 enable 为 false
TextBox
|
|
txtPhone
|
默认 enable 为 false
TextBox
|
|
txtAddress
|
默认 enable 为 false,Multiline 为 true
3 . 编写代码:
首先我们在窗体加载事件里面添加 liestView 显示数据事件
private void Form1_Load( object sender, System.EventArgs e)
{
getInfo();
}
在 getInfo 方法里面我们必须把数据库里面的信息读取出来同时显示到 listView 里面。这时一个可行的办法是使用 DataReader 直接读取数据然后显示。但是我这里不想这样做,我编写一个专门的类 contractDB 来处理数据,这个类里面有自己的一些方法,实现对数据库的操作。
// class contractDB, 封装应用程序所有对数据库的操作事件
using System;
using System.Data;
using System.Data.SqlClient;
namespace contract
{
///
1<summary>
2
3/// contractDB 的摘要说明。
4
5/// </summary>
public class contractDB
{
string connStr = "Data Source = joycode;Initial Catalog = contract;user id = sa;password = 87345587";
//string sql;
//SqlCommand cmd;
public contractDB()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
///
1<summary>
2
3/// 获得所有联系人信息
4
5/// </summary>
///
1<returns> 所有联系人信息 </returns>
public SqlDataReader getReader()
{
string sql = "select Fid,Fname,Fphone,Faddress from friend";
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlCommand cmd = new SqlCommand(sql,conn);
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return reader;
}
}
}
我的目的很明显 , 我将调用 getReader 方法得到我须要的 DataReader ,因此在 Form1 里面的 getInfo 方法代码如下:
private void getInfo()
{
contractDB cdb = new contractDB();
try
{
SqlDataReader reader = cdb.getReader();
this .listView.Items.Clear();
while (reader.Read())
{
string [] subItems = new string []
{
reader.GetInt32(0).ToString(),
reader.GetString(1),
reader.GetString(2),
reader.GetString(3)
};
this .listView.Items.Add( new ListViewItem(subItems));
}
reader.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
上面的代码很简单,不做解释,但是注意由于我们在数据访问类没有考虑异常,那么我们在这里必须处理可能出现的异常。
类似的我们在数据访问类中添加另外的方法:添加联系人,删除联系人,修改信息。整个类文件如下:
using System;
using System.Data;
using System.Data.SqlClient;
namespace contract
{
///
1<summary>
2
3/// contractDB 的摘要说明。
4
5/// </summary>
public class contractDB
{
string connStr = "Data Source = bineon;Initial Catalog = contract;user id = sa;password = 87345587";
//string sql;
//SqlCommand cmd;
public contractDB()
{
<span style="COLOR: