数据源

From Apache OpenOffice Wiki
Jump to: navigation, search
doc OOo
Book.png


通过创建通常所说的数据源,可以将数据库添加到 Apache OpenOffice 中。在“其他”菜单中,用户界面提供了创建数据源的相应选项。也可以通过 Apache OpenOffice Basic 创建并使用数据源。

使用 createUnoService 函数创建的数据库上下文对象可作为数据源访问的起点。它基于 com.sun.star.sdb.DatabaseContext 服务并作为所有数据库操作的根对象。

以下示例说明了如何创建数据库上下文,并随后使用它确定所有可用数据源的名称。它在消息框中显示这些名称。

Dim DatabaseContext As Object
Dim Names
Dim I As Integer
 
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
 
Names = DatabaseContext.getElementNames()
 
For I = 0 To UBound(Names())
  MsgBox Names(I)
Next I

各个数据源基于 com.sun.star.sdb.DataSource 服务,可以从数据库上下文中使用 getByName 方法确定这些数据源:

Dim DatabaseContext As Object
Dim DataSource As Object
 
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Customers")

此示例为名为 Customers 的数据源创建一个 DataSource 对象。

数据源提供了一系列属性,而这些属性又提供了有关数据来源的一般信息以及有关访问方法的信息。这些属性包括:

Name (String)
数据源名称
URL (String)
数据源 URL,格式为 jdbc: subprotocol : subnamesdbc: subprotocol : subname
Settings (Array)
包含 PropertyValue-对和连接参数(通常至少为用户名和密码)的数组
User (String)
用户名
Password (String)
用户密码(不保存)
IsPasswordRequired (Boolean)
密码是必需的,将以交互方式向用户请求密码。
IsReadOnly (Boolean)
允许以只读方式访问数据库
NumberFormatsSupplier (Object)
包含数据库的可用数字格式的对象(支持 com.sun.star.util.XNumberFormatsSupplier 接口)
TableFilter (Array)
要显示的表格名称列表
TableTypeFilter (Array)
要显示的表格类型列表。可用的值为 TABLEVIEWSYSTEM TABLE
SuppressVersionColumns (Boolean)
禁止显示用于版本管理的列
Documentation note.png 来自 Apache OpenOffice 的数据源并不完全相当于 ODBC 中的数据源。ODBC 数据源仅包含有关数据来源的信息;而 Apache OpenOffice 中的数据源还包含有关如何在 Apache OpenOffice 数据库窗口中显示数据的一系列信息。

查询

可以为数据源分配预定义查询。Apache OpenOffice 记录查询的 SQL 命令,以便可以随时使用这些命令。查询用于简化数据库的使用方式,因为通过简单的鼠标单击操作即可打开查询,并且查询还为不了解 SQL 的用户提供了执行 SQL 命令的选项。

查询后面隐藏了一个支持 com.sun.star.sdb.QueryDefinition 服务的对象。可通过数据源的 QueryDefinitions 方法来访问查询。

以下示例列出了可以在消息框中建立的数据源查询名称。

Dim DatabaseContext As Object
Dim DataSource As Object
Dim QueryDefinitions As Object
Dim QueryDefinition As Object
Dim I As Integer
 
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Customers")
QueryDefinitions = DataSource.getQueryDefinitions()
 
For I = 0 To QueryDefinitions.Count() - 1
  QueryDefinition = QueryDefinitions(I)
  MsgBox QueryDefinition.Name
Next I

除了示例中使用的 Name 属性以外,com.sun.star.sdb.QueryDefinition 还提供了各种其他属性。这些属性包括:

Name (String)
查询名称
Command (String)
SQL 命令(通常为 SELECT 命令)

以下示例说明了如何以程序控制的方式创建查询对象,以及如何将其分配给数据源。

Dim DatabaseContext As Object
Dim DataSource As Object
Dim QueryDefinitions As Object
Dim QueryDefinition As Object
Dim I As Integer
 
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Customers")
QueryDefinitions = DataSource.getQueryDefinitions()
QueryDefinition = createUnoService("com.sun.star.sdb.QueryDefinition")
QueryDefinition.Command = "SELECT * FROM Customer"
QueryDefinitions.insertByName("NewQuery", QueryDefinition)

首先,使用 createUnoService 调用创建查询对象,对其进行初始化,然后通过 insertByName 将其插入到 QueryDefinitions 对象中。

Content on this page is licensed under the Public Documentation License (PDL).
Personal tools