12
返回列表 发新帖
楼主: nikefever

Sybase移动数据库Pocket PC客户端编程

[复制链接]
论坛徽章:
0
11#
 楼主| 发表于 2007-8-10 16:26 | 只看该作者
图1-10 指定要连接的数据库名称
点击上图中的完成按钮,将弹出如下图所示的对话框。

20070718_f0e60aea1a674b6b89cf4xr12kn7cmbm.jpg (27.19 KB, 下载次数: 15)

20070718_f0e60aea1a674b6b89cf4xr12kn7cmbm.jpg

使用道具 举报

回复
论坛徽章:
0
12#
 楼主| 发表于 2007-8-10 16:26 | 只看该作者
图1-11 完成创建界面
如果创建数据库成功,在上图中将显示“创建数据库已完成”的信息。点击关闭按钮关闭上面的对话框。至此为止,你已经成功的创建了Ultralite数据库。
然后,我们就可以到d:\udb目录下找到,刚才创建的数据库文件mydb.udb。在创建了Ultralite数据库之后,我们再来看一下有关如何在Visual Studio 2005环境下,开发Ultralite移动数据库应用的相关技术知识。
2、查询Sybase ULtralite数据库的数据
在本书前面的章节中,我们已经讨论过如何通过Visual Studio 2005创建ULtralite移动数据库应用工程。下面我们看一下在此基础上,如何配置、开发移动数据库应用工程。在你创建了一个移动应用工程后,你需要将SQLAnywhere Studio 10安装目录下的%SAS_HOME%\ ultralite\UltraLite.NET\ce\assembly\v2\iAnywhere.Data.UltraLite.dll文件添加到当前工程的引用中,如下图所示:

20070718_f1c9de248b08bbbf3c98sfo45enfqaot.jpg (16.32 KB, 下载次数: 9)

20070718_f1c9de248b08bbbf3c98sfo45enfqaot.jpg

使用道具 举报

回复
论坛徽章:
0
13#
 楼主| 发表于 2007-8-10 16:27 | 只看该作者
图1-12 在Visual Studio 2005中添加iAnywhere.Data.UltraLite.dll类库界面
然后,你需要再将SQLAnywhere Studio 10安装目录下的%SAS_HOME%\ultralite\UltraLite.NET\ce\armt\ ulnet10.dll添加到工程中。具体的添加步骤如下:
1右键点击当前工程名称,在弹出菜单中选择Add菜单,然后点击Existing Item..菜单,在弹出的窗口中,找到ulnet10.dll文件,然后以连接的方式添加(Add As Link),如下图所示:

20070718_be7f6d0b1f83d8f6c1d7j4aej6bs3okw.jpg (40.93 KB, 下载次数: 18)

20070718_be7f6d0b1f83d8f6c1d7j4aej6bs3okw.jpg

使用道具 举报

回复
论坛徽章:
0
14#
 楼主| 发表于 2007-8-10 16:27 | 只看该作者
图1-13在Visual Studio 2005中添加ulnet10.dll文件界面
将ulnet10.dll添加到工程之后,你还需要设置该文件的关键属性,如下图所示:

20070718_488dd613aeab10c909f5c4fancjnamsp.jpg (12.53 KB, 下载次数: 20)

20070718_488dd613aeab10c909f5c4fancjnamsp.jpg

使用道具 举报

回复
论坛徽章:
0
15#
 楼主| 发表于 2007-8-10 16:28 | 只看该作者
图1-14 设置Build Action界面
最后再以同样的步骤添加我们前面创建的Ultralite数据库文件mydb.udb到当前的工程中,只不过在添加时不是以连接的方式添加,而是选择直接添加的方式(Add)将该文件添加到工程中,其关键属性的设置与ulnet10.dll的完全相同。再做完上述的工作之后,我们就可以做进一步的开发工作了。接下来,我们来看一下如何读取ULtralite数据库中的数据(注意:本例中我们引用的ULtralite数据库中并没有包含任何数据表(table),后面将讲解如何创建ULtralite数据库中的数据表)的相关技术知识。
与传统的数据库应用开发一样,要查询数据库中的数据,我们必须首先创建一个数据库连接,然后通过该连接读取数据库中的数据。打开Ultralite数据库连接的代码如下所示:
… …
using iAnywhere.Data.UltraLite;

private string udbFile = "\\Program Files\\ULtraliteProject\\mydb.udb";

public
ULConnection GetDBConnection(string usmfile, string udbfile)
{

ULConnection conn = null;

try

{

ULConnectionParms parms = new ULConnectionParms();

parms.DatabaseOnDesktop = udbFile;

parms.DatabaseOnCE = udbFile;

conn = new ULConnection(parms.ToString());

conn.Open();

}

catch (Exception ex)


{

throw ex;

}

return conn;
}

… …
注意在上面的代码中的using iAnywhere.Data.UltraLite;一行的意义是,引用Ultralite数据库的API。变量udbFile存储了指向Ultralite数据库文件的目录,注意在\\Program Files\\ULtraliteProject\\mydb.udb串中,只有工程名称UltraliteProject与数据库文件mydb.udb随着工程的不同而变化,通常来讲Program Files部分是固定不变的。在得到一个ULConnection连接对象之后,你可以通过向下面的方法中传入查询SQL语句,先创建一个ULDataReader对象,然后通过ULDataReader对象读取数据,如下所示:
… …
using iAnywhere.Data.UltraLite;

public void GetDataReader(string sqlText)

{

ULConnection connection = GetDBConnection(usmFile, udbFile);

ULCommand cmd = connection.CreateCommand();


cmd.CommandText = sqlText;

ULDataReader dataReader = cmd.ExecuteReader();

// 读取数据

while (dataReader.Read())

{

MessageBox.Show(dataReader.GetValue(0).ToString());

}



// 关闭DataReader对象

dataReader.Close();

// 关闭ULConnection对象

connection.Close();
}
… …
上面方法中的DataReader对象,你可以理解为结果集对象(ResultSet)。下面我们再来看一下如何更新ULtralite数据库的数据的相关技术知识。
3、更新ULtralite数据库的数据
在得到ULConnection基础上,更新Ultralite数据库中的数据是非常简单的。如下面的实例代码所示:
… …
using iAnywhere.Data.UltraLite;

public void UpdateData(string sqlText)
{

ULConnection connection = GetDBConnection(usmFile, udbFile);

ULCommand cmd = connection.CreateCommand();

cmd.CommandText = sqlText;
// 执行更新操作

cmd.ExecuteNonQuery();


// 关闭ULConnection对象

connection.Close();

}
… …
上面方法中的参数是一个含有Update,Insert,Delete,Create等数据管理类型的SQL语句,同样我们也需要先通过ULConnection对象创建一个ULCommand对象,然后执行ULCommand对象中的ExecuteNonQuery()方法更新数据。
下面给出一个具体的创建数据表,插入数据的代码执行序列,如下所示:
… …


ULCommand cmd = conn.CreateCommand();



cmd.CommandText = "create table test (name varchar(30) primary key)";


cmd.ExecuteNonQuery();

cmd.CommandText = "insert into test values('user1')";

cmd.ExecuteNonQuery();

cmd.CommandText = "insert into test values('用户名')";

cmd.ExecuteNonQuery();

conn.Close();
… …
删除ULtralite数据库中的数据的过程与此类似。这里就不再一一赘述了。
四、结束语

上面讲解了有关Sybase移动数据库解决方案的基本架构与产品组成,重点讲解了移动设备Pocket PC上的Ultralite移动数据库的编程技术。值得一提的是,上面并未给出Pocket PC上Ultralite数据库与统一数据库进行同步的代码,这是因为这部分编程技术与Mobilink同步服务器编程的关系更为紧密,如果有机会作者希望在后续的章节中给出。最终通过一个完成的应用例子来系统的讲解基于Sybase移动数据整体解决方案的开发技术。

使用道具 举报

回复
论坛徽章:
39
开发板块每日发贴之星
日期:2005-04-29 01:02:052011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-02-18 11:43:33管理团队成员
日期:2011-05-07 01:45:08ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18
16#
发表于 2007-8-10 16:34 | 只看该作者
呵呵。谢谢

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表