|
|
图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移动数据整体解决方案的开发技术。 |
|