日期:2012-04-22  浏览次数:20396 次

前面的文章地址:

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

{

/// <summary>

/// contractDB 的摘要说明。

/// </summary>

public class contractDB

{

string connStr = "Data Source = joycode;Initial Catalog = contract;user id = sa;password = 87345587";

//string sql;

//SqlCommand cmd;



public contractDB()

{

//

// TODO: 在此处添加构造函数逻辑

//

}



/// <summary>

/// 获得所有联系人信息

/// </summary>

/// <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());

}

}

上面的代码很简单,不做解释,但是注