博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Pocket PC应用程序中使用SQL Server CE(转)
阅读量:2495 次
发布时间:2019-05-11

本文共 4392 字,大约阅读时间需要 14 分钟。

最近发布的Microsoft .NET Compact Framework beta1版包括了SQL Server CE2.0,SQL Server CE将SQL Server 2000扩展到windows CE环境中,同时它提供了与桌面应用程序开发相似的的开发环境。在这篇文章中我将初步介绍SQL CE 以及如何利用Smart Device Extension开发Pocket PC上的应用程序。
.NET Compact Framework体系结构
.NET Compact Framework(CF)是.NET Framework的子集,他最主要的优点是与.net类库具有相同的灵活性。但是所有.NET Framework的类和方法均能在.NET Compact Framework(CF)中使用。下图显示了一个移动平台的构成体系。
20051221164516821.jpg
图1
这个平台允许Windows CE自携带的应用程序与基于.net的应用程序共存。应用程序的宿主(本身也是一个应用程序)用一个公共运行时语言(CRL Common Language Runtime)的实例来管理代码。通过SDE利用.NET Compact Framework类库在CRL的顶端开发应用程序。
构造一个应用程序样本实例
在这个样本实例中将揭示.NET CF Pocket PC程序设计中要注意的几个方面。我将解释在.NET CF中怎样使用Web Service,怎样使用各种空件,以及怎样构件SQL Server CE数据库。这是一个书店的例子,例子中书店的售货员使用Pocket PC进行查询(在Web Sevice中),并在书店中下订单,这个订单将被提交给本地的SQL Server CE数据库。
Web Sevice
Web Sevice将使用SQL Server2000中携带的Pubs数据库,这样你就可以很容易的在自己的机器上测试代码。
getTitles():
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Web.Services
Public Class Service1 : Inherits WebService
_
Public Function getTitles( _
ByVal title As String) As DataSet
' Make the database connection.
Dim conn As New SqlConnection( _
"server=localhost; uid=sa;" & _
"password=; database=Pubs")
' Create the SQL and set the parameter.
Dim sql As String = "SELECT * FROM " & _
"titles WHERE title LIKE @title"
Dim comm As New SqlCommand(sql, conn)
comm.Parameters.Add("@title", _
"%" & title & "%")
' Create a data adapter and data set.
Dim dataAdapter As New SqlDataAdapter(comm)
Dim ds As New DataSet()
' Fill the data set with the query results.
conn.Open()
dataAdapter.Fill(ds, "titles")
conn.Close()
' Return the dataset.
Return ds
End Function
End Class
  getTitles()方法获得查询字符串作为输入参数,同时返回数据集。
使用 Visual Studio .NET中的 Smart Device Extension (SDE)
在建立Web Sevice后,我们继续用SDE创建Pocket PC的应用程序。我们要开发的这个Pocket PC应用程序由一个tab控件和两个tab页组成,第一个tab页允许售货员通过书店搜索书籍并向书店下订单,第二个tab页则显示书店的订单。图2显示了程序重要使用的各种控件,这些控件有:label,textbox,button,combox,listbox和tab等控件:
20051221164516300.jpg
图2
在form第一次运行的时候,首先需要核查Pocket PC是否有包含书店信息的数据库,如果没有,那么就要用SQL Server CE引擎对象创建数据库。由于需要与SQL Server CE建立连接,所以必须使用SQL Server CE Managed Provider,因此第一件事情是引用System.Data.SqlServerCe.dll配置和输入相关的名称空间。
Imports System.Data.SqlServerCe
20051221164517217.jpg
图3
建立数据库后,就需要创建表,操作表就必须熟悉ADO.NET类库,在这个例子中我们将在SQL Server CE Managed Provider使用类: SqlCeConnection 和 SqlCeCommand类。
'-----conn and ds are defined globally-----
Dim conn As New SqlCeConnection( _
"Provider=Microsoft.SQLServer.OLEDB.CE.1.0;" & _
"Data Source=My DocumentsBookStores.sdf")
Dim ds As DataSet
'------------------------------------------
Sub createStoreDB()
' if database does not exist, create one
If Not File.Exists( _
"My DocumentsBookStores.sdf") Then
Dim sqlEngine As New Engine( _
"Data Source=" & _
"My DocumentsBookStores.sdf")
sqlEngine.CreateDatabase()
Dim cmd As New SqlCeCommand( _
"CREATE TABLE Stores(storeID int " & _
"Primary Key NOT NULL, " & _
"storeName nvarchar(20))", conn)
conn.Open()
cmd.ExecuteNonQuery()
cmd.CommandText = _
"CREATE TABLE Orders(storeID int, " & _
"title_id nvarchar(20), qty int)"
cmd.ExecuteNonQuery()
cmd.CommandText = _
"INSERT INTO Stores (storeID, " & _
"storeName) VALUES (1, " & _
"'Great BookStore')"
cmd.ExecuteNonQuery()
cmd.CommandText = _
"INSERT INTO Stores (storeID, " & _
"storeName) VALUES (2, " & _
"'Computer BookStore')"
cmd.ExecuteNonQuery()
conn.Close()
End If
End Sub
在上面的代码中我们创建了两个表:Orders和Store。Orders存储来自售货员的订单,Stores存储书店的库存,出于方便我已经在Stores中输入了两条纪录。
20051221164519377.jpg
图4
下一步使用SqlCeDataReader类将书店列表价载入ComboBox控件中。
Sub LoadStores()
conn.Open()
Dim reader As SqlCeDataReader
Dim cmd As New SqlCeCommand( _
"SELECT * FROM Stores", conn)
reader = cmd.ExecuteReader
While reader.Read
cboStoreID.Items.Add( _
reader.Item("storeID"))
End While
conn.Close()
End Sub
这样当表单被载入时,ComboBox控件就填充了书店列表。
20051221164519934.jpg
图5
当选中Store ID时,就显示他代表的
Private Sub cboStoreID_SelectedIndexChanged( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles cboStoreID.SelectedIndexChanged
conn.Open()
Dim sql As String = _
"SELECT * FROM Stores WHERE storeID=" & _
cboStoreID.Items(cboStoreID.SelectedIndex)
Dim cmd As New SqlCeCommand(sql, conn)
Dim reader As SqlCeDataReader = cmd.ExecuteReader
reader.Read()
lblStoreName.Text = reader.Item("storeName")
conn.Close()
End Sub
调用Web Sevice
对于特殊的书籍查询,应用程序将调用Web Sevice,在.NET CF中调用Web Sevice与在.NET Framework中没有什么差别,要注意的是Web Sevice必须与实际机器上使用的名称相同,否则Web Sevice将不会工作。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-126708/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10294527/viewspace-126708/

你可能感兴趣的文章
jenkins + maven+ gitlab 自动化部署
查看>>
Pull Request流程
查看>>
Lambda 表达式
查看>>
函数式数据处理(一)--流
查看>>
java 流使用
查看>>
java 用流收集数据
查看>>
java并行流
查看>>
CompletableFuture 组合式异步编程
查看>>
mysql查询某一个字段是否包含中文字符
查看>>
Java中equals和==的区别
查看>>
JVM内存管理及GC机制
查看>>
Java:按值传递还是按引用传递详细解说
查看>>
Java中Synchronized的用法
查看>>
阻塞队列
查看>>
linux的基础知识
查看>>
接口技术原理
查看>>
五大串口的基本原理
查看>>
PCB设计技巧与注意事项
查看>>
linux进程之间通讯常用信号
查看>>
main函数带参数
查看>>