Windows Powered Pocket PC Phone Edition 的数据库开发
2008-09-09 10:04:50 来源:WEB开发网填充 ListView
GolfAnyplace 项目介绍了两种填充 ListView 的方法:使用 DataSet 和使用 DataReader。由于我之前选择了实现 SQL Server CE 的包装,因此这时就适合使用 DataSet。DataSet 可以断开连接,而且还能在这种断开连接的状态下在类之间传递数据(封送处理)。由于 DataReader 需要有效的数据库连接,因此应该尽可能在打开和关闭连接时使用。第一段示例代码显示如何通过遍历 DataSet 来填充 ListView。
以下是填充 ListView 的代码:
private void UpdateResultListView()
{
// 更新列表视图。
// 已知错误:
// 版本 日期 人员 注释
// 00.00.000 020808 ASJ 创建
// *****************************
DataSet ds = null;
SQLServerCEWrapper SSCEWrapper = new SQLServerCEWrapper();
// 获取 DataSet
ds = SSCEWrapper.GetPlayerResult(txtPlayerName.Text);
// 清除 ListView
lvwResult.Items.Clear();
// 遍历 DataSet
foreach (DataRow dr in ds.Tables[0].Rows)
{
ListViewItem lviItem = new ListViewItem(dr["Hole"].ToString());
lviItem.SubItems.Add(dr["Result"].ToString());
lvwResult.Items.Add(lviItem);
}
}
以下是包装类中相应的代码:
public DataSet GetPlayerResult(string PlayerName)
{
// 从本地数据库获取数据。作为 DataSet 返回。
// 已知错误:
// 版本 日期 人员 注释
// 00.00.000 020808 ASJ 创建
// *****************************
string SQL;
SqlCeConnection cn;
SqlCeCommand cmd;
DataSet ds;
SqlCeDataAdapter da;
// 初始化新的连接
cn = new SqlCeConnection(LocalConnection);
// 打开连接
cn.Open();
// 生成 SQL
SQL = "SELECT PlayerName, Hole, Result FROM " + LocalTableName
+ " WHERE PlayerName = '" + PlayerName + "' ORDER BY Hole";
// 初始化新的命令
cmd = new SqlCeCommand(SQL,cn);
// 初始化新的 DataSet
ds = new DataSet();
da = new SqlCeDataAdapter(SQL,cn);
// 通过适配器,使用数据来填充 DataSet
da.Fill(ds, LocalTableName);
// 清理
cn.Dispose();
cmd.Dispose(true);
// 返回 DataSet
return ds;
}
更多精彩
赞助商链接