ADO.NET详细研究(四)--实例演示DataReader基本操作

** 前面的文章地址: **

** 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:

Published At
Categories with Web编程
Tagged with
comments powered by Disqus