UltraLite 应用程序必须先连接到数据库,然后才能对数据库中的数据进行操作。本节将介绍如何连接到 UltraLite 数据库。
Connection 对象的以下属性控制全局应用程序行为。
提交行为 缺省情况下,UltraLite.NET 应用程序处于 [自动提交] 模式。每个插入、更新或删除语句都被立即提交给数据库。您可以使用 ULConnection.BeginTransaction() 将事务构建到应用程序中。
有关详细信息,请参见 UltraLite 中的事务处理。
用户鉴定 可以使用 [授予] 和 [撤消] 连接权限的方法将应用程序的用户 ID 和口令从其缺省值 DBA 和 SQL 更改为其它值。每个应用程序最多可以有四个用户 ID。
有关详细信息,请参见用户鉴定 。
同步 可以通过 Connection 对象访问控制同步的一组对象。
有关详细信息,请参见同步 UltraLite 应用程序。
表 使用 Connection 对象的方法可以访问 UltraLite 表。
有关详细信息,请参见使用 Table API 访问和操作数据。
命令 系统提供了一组对象来处理动态 SQL 语句的执行和浏览结果集。
有关详细信息,请参见使用动态 SQL 访问和操作数据。
有关详细信息,请参见 类 ULConnection(iAnywhere.Data.UltraLite 命名空间)或 类 Connection(iAnywhere.UltraLite 命名空间)。
每个 Connection 对象以及从该对象中创建的所有对象都应该在单个线程中使用。如果您的应用程序需要使用多个线程访问 UltraLite 数据库,则每个线程都需要一个单独的连接。
连接到 UltraLite 数据库
创建并初始化 DatabaseManager 对象。
如果使用的是 iAnywhere.Data.UltraLite 命名空间,则不需要此步骤。
DatabaseManager 对象位于对象层次结构的根部。对于每个应用程序,只应创建一个 DatabaseManager 对象。通常,最好将 DatabaseManager 对象声明为应用程序范围内的全局对象。
// iAnywhere.UltraLite namespace DatabaseManager dbMgr = new DatabaseManager();
有关详细信息,请参见 类 DatabaseManager(iAnywhere.UltraLite 命名空间)。
声明 Connection 对象。
大多数应用程序都使用一个与 UltraLite 数据库的连接,并使该连接保持打开状态。只有多线程数据访问才需要多个连接。因此,通常最好将 Connection 对象声明为应用程序范围内的全局对象。
// iAnywhere.Data.UltraLite namespace ULConnection conn;
// iAnywhere.UltraLite namespace Connection conn;
打开与现有数据库的连接,或者,如果指定的数据库文件不存在,创建一个新数据库。
大多数 UltraLite 应用程序都部署模式文件而不是数据库文件,并让 UltraLite 在第一次尝试连接时创建数据库文件。因此,以下代码尝试连接到现有数据库。如果数据库文件不存在,应用程序将创建数据库文件。
// iAnywhere.Data.UltraLite namespace ULConnectionParms parms = new ULConnectionParms(); // specify the location of the database file parms.DatabaseOnDesktop = "mydata.udb"; // specify the location of the schema file parms.SchemaOnDesktop = "mydata.usm"; conn = new ULConnection( parms.ToString() ); conn.OpenWithCreate();
// iAnywhere.UltraLite namespace
ConnectionParms parms = new ConnectionParms();
// specify the location of the database file
parms.DatabaseOnDesktop = "mydata.udb";
try {
conn = dbMgr.OpenConnection( parms );
} catch( SQLException econn ) {
if( econn.GetErrorCode() ==
SQLCode.SQLE_ULTRALITE_DATABASE_NOT_FOUND ){
CreateParms parms = new CreateParms();
parms.DatabaseOnDesktop = "mydata.udb";
parms.Schema.SchemaOnDesktop = "mydata.usm";
try {
conn = dbMgr.CreateDatabase( parms );
}
}以下代码用于打开到一个名为 mydata.udb 的 UltraLite 数据库的连接。如果该数据库不存在,则使用名为 mydata.usm 的 UltraLite 模式文件创建该数据库。
// iAnywhere.Data.UltraLite namespace
ULConnectionParms parms = new ULConnectionParms();
parms.DatabaseOnDesktop = "mydata.udb";
parms.SchemaOnDesktop = "mydata.usm";
conn = new ULConnection( parms.ToString() );
conn.InfoMessage += new ULInfoMessageEventHandler(
InfoMessageEventHandler );
conn.OpenWithCreate();// iAnywhere.UltraLite namespace
CreateParms parms = new CreateParms();
parms.DatabaseOnDesktop = "mydata.udb";
parms.Schema.SchemaOnDesktop = "mydata.usm";
try {
conn = dbMgr.OpenConnection( parms );
System.Console.WriteLine(
"Connected to an existing database." );
}
catch( SQLException econn ) {
if( econn.GetErrorCode() ==
SQLCode.SQLE_ULTRALITE_DATABASE_NOT_FOUND ){
conn = dbMgr.CreateDatabase( parms );
System.Console.WriteLine(
"Connected to a new database." );
} else {
throw econn;
}
}上面的代码使用下面定义的 InfoMessage 处理程序检测该数据库是否是新的。
// iAnywhere.Data.UltraLite namespace
protected void InfoMessageHandler(
object obj, ULInfoMessageEventArgs args )
{
if( args.NativeError == ULSQLCode.SQLE_DATABASE_CREATED ){
System.Console.WriteLine( args.Message );
}
}SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。