window Mobile SqlCeResultSet

最近看了马宁老师的SqlCEResultset课程后,确是在wince访问本地数据库的时候确实很好用,性能很好.具体的课程可以在微软的网站下载。

在这里做一些SqlCeResultSet的介绍:

第一:什么是SqlCeResultSet

SqlCeResultSet其实是一个特殊的DataReader,但是不像一般的DataReader,它可以向前向后查看数据,而且可以将修改的数据Update到数据库中。因为实现了IListSource,所以支持被WinForm控件进行数据绑定。始终与数据库连接,不像Dataset,可以实现显示被其他连接改变的数据,。NET Compact Framework 2.0支持。

第二:介绍ResultSetOptions的设置

如果不设置ResultSetOptions的参数的话~!对象按照默认行为执行,

参数有Insensitive --- 不会发现其他数据连接对数据源的改变 。

          Sensitive --- 察觉来自其他数据连接的改变  --Base table cursors的属性始终为Sensitive  --- 

                                                                              TableDirect  command type => base table cursor

          Scrollable --你可以向前或向后读取数据,使用内部的BookmarkArray

          Updatable ---允许更新

          None --- 只读,单向浏览数据。

*******************************************************************************************************************************

从数据库中加载数据
– 使用SqlCeResultSet
– 使用TableDirect
– 如果需要修改数据库,则使用
ResultSetType.Updatable

那么读取数据的时候确实有几种方法:

第一是使用Data Binding 控件 和SqlCeResultSet

备注:

BindingSource控件(new in Microsoft .NET 2.0)
? 提供数据源与窗体控件间的间接逻辑层
? 为数据集合提供strong-typed数据绑定
? 将BindingSource.DataSource设置为
ResultSetView中,然后将控件的DataSource属性
设置为BindingSource
– Visual Studio中的大部分控件可以用于数据绑定
– 控件被绑定到同一个BindingSource上,可以保持一致

 

只要设置好Data Binding 控件与数据库连接后就可以使用SqlCeResultSet

VB.NET '这里使用BookBase.sdf为本地数据库

 

'创建一个连接路径

Dim sqlceconnstr As String = "Data Source=E:\NET信息\BookBase.sdf"

'定义SqlCeResultSet

Dim orderSet as DBResultSets.OrdersResultSet = new DBResultSets.OrdersResultSet(connString, ResultSetOptions.Scrollable | ResultSetOptions.Sensitive | ResultSetOptions.Updatable)

dim bs as BindingSource=new BindingSource

orderSet .Bind(bs)

datagrid1.dataSource =bs

这里的添加使用 orderSet.AddOrdersRecord 和删除 orderSet.Delete 还有更新orderSet.Update 就可以了。

第二种是ResultSetView数据绑定

备注:这里列出三种控件的加载

? 不需要使用BindingSource,也可以进行数据绑定 为data source参数

     DataGrid.DataSource = your ResultSetView
? 简单control(例如TextBox) 使用ResultSetView 作

TextBox.DataBindings.Add("text", ResultSet.ResultSetView,"Customer ID", true, DataSourceUpdateMode.Never);
? List controls (ListBox, ComboBox)
ListBox.DataSource = your view
ListBox.DisplayMember = view.Columns[n]
ListBox.ValueMember = view.Columns[n]

------使用datagrid加载  SqlCeResultSet  ,按表查询的,如果是用select语句的话!只要更改一下cmd就可以了

   Try
            Dim sqlceconnstr As String = "Data Source=E:\NET信息\BookBase.sdf"
            Dim conn As SqlCeConnection
            conn = New SqlCeConnection(sqlceconnstr)  '创建连接
            conn.Open() '打开连接
            Dim cmd As SqlCeCommand = conn.CreateCommand  '创建查询过程
            cmd.CommandType = CommandType.TableDirect '按整表查询模式
            cmd.CommandText = "Order" '写入表名
            '定义SqlCeResultSet
            Dim resultSet As SqlCeResultSet = cmd.ExecuteResultSet(ResultSetOptions.Sensitive Or ResultSetOptions.Scrollable Or ResultSetOptions.Updatable)
            '显示数据
            DataGridView1.DataSource = resultSet.ResultSetView
            conn.Close()
        Catch ex As SqlCeException
            MsgBox(ex.Message)
        End Try

 

好了,这里就简单的介绍了SqlCeResultSet 的用法和基本情况,其实在wince访问本地数据库的,多使用Datareader

是最好的,SqlCeResultSet 只是一个特殊的DataReader而已,希望能给大家一点帮助.有好的写法和建议可以留言给我。

 

posted on 2009-10-19 16:45  coder狼  阅读(352)  评论(0)    收藏  举报

导航