Collection Contents 上一页 下一页 PDF

UltraLite.NET 用户指南

了解 UltraLite.NET 开发

连接到数据库


UltraLite 应用程序必须先连接到数据库,然后才能对数据库中的数据进行操作。本节将介绍如何连接到 UltraLite 数据库。

使用 Connection 对象 

Connection 对象的以下属性控制全局应用程序行为。

有关详细信息,请参见 类 ULConnection(iAnywhere.Data.UltraLite 命名空间)或 类 Connection(iAnywhere.UltraLite 命名空间)。

多线程应用程序 

每个 Connection 对象以及从该对象中创建的所有对象都应该在单个线程中使用。如果您的应用程序需要使用多个线程访问 UltraLite 数据库,则每个线程都需要一个单独的连接。

连接到 UltraLite 数据库

  1. 创建并初始化 DatabaseManager 对象。

    如果使用的是 iAnywhere.Data.UltraLite 命名空间,则不需要此步骤。

    DatabaseManager 对象位于对象层次结构的根部。对于每个应用程序,只应创建一个 DatabaseManager 对象。通常,最好将 DatabaseManager 对象声明为应用程序范围内的全局对象。

    // iAnywhere.UltraLite namespace
    DatabaseManager dbMgr = new DatabaseManager();

    有关详细信息,请参见 类 DatabaseManager(iAnywhere.UltraLite 命名空间)。

  2. 声明 Connection 对象。

    大多数应用程序都使用一个与 UltraLite 数据库的连接,并使该连接保持打开状态。只有多线程数据访问才需要多个连接。因此,通常最好将 Connection 对象声明为应用程序范围内的全局对象。

    // iAnywhere.Data.UltraLite namespace
    ULConnection conn;
    // iAnywhere.UltraLite namespace
    Connection conn;
  3. 打开与现有数据库的连接,或者,如果指定的数据库文件不存在,创建一个新数据库。

    大多数 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 );
  }
}

Collection Contents 上一页 下一页 PDF