`

H2数据库用户自定义函数方法及范例

阅读更多

H2 数据库,是Java实现的内存数据库。可使用它作为嵌入式内存数据库,但就其特性还用更多值得应用在实际项目中的意义。之前的一篇Blog中已经描述过其使用方法及丰富的连接数据库方式。

 

官方主页:http://www.h2database.com/

 

此段文字只说明用户如何自定义数据库函数,以及在数据库中注册函数。如对你有帮助可继续阅读

 

     首先来说明用户自定义函数的场景,现在假设我们需要在H2数据库中实现Oracle的“TO_DATE”函数,那么需要的过程是这样的:(1) 使用Java实现自定义函数的方法。(2) 将Java的自定义函数注册到H2数据库中。

 

(1) 首先我们来实现这个函数:

 

TO_DATE函数的Code:

/**
 * 
 */
package com.seraph.bi.suite.support.h2;

import java.text.SimpleDateFormat;
import org.h2.tools.SimpleResultSet; 
... ...

/**
 * Description: Function for H2 database<br>
 * Origin Time: 2009-7-11 上午07:57:46<br>
 * 
 * @author Seraph<br>
 * @email:seraph115@gmail.com<br>
 */
public class Function {

	/**
	 * Method: TO_DATE function like Oracle's<br>
	 * Origin Time: 2009-7-11 上午08:14:11<br>
	 * 
	 * @author: Seraph<br>
	 * @param source
	 * @param format
	 * @return
	 * @throws ParseException 
	 */
	public static java.sql.Date to_date(String source, String format) throws ParseException {
		// TODO: 'YYYY-MM-DD' ? Oracle format?
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		java.util.Date date = sdf.parse(source);
		return new java.sql.Date(date.getTime());
	}
	... ...
}

 

 以上代码段是TO_DATE的实现,但用户自定义的函数需注意的是:类和方法必须是公共(Public)的,且方法需为静态(static)的,如方法中使用了Connection对象需将其关闭。

 

(2) 将其注册到数据库中,须执行语句

 

 

CREATE ALIAS

CREATE ALIAS [IF NOT EXISTS] newFunctionAliasName


 [DETERMINISTIC]
FOR classAndMethodName



 

 

本例须执行的语句为: CREATE ALIAS TO_DATE FOR "com.seraph.bi.suite.support.h2.Function.to_date";

 

这样再执行类似语句,如:SELECT to_date('2009-1-21','YYYY-MM-DD') from Your_Table  函数TO_DATE即可被解析了。

 

 

完成以上的步骤你就可以使用自己定义的数据库函数了。这样将更方便于数据库之间的切换,使用内存数据库应用程序启动轻快,体积小,适合于程序开发时的单元测试及集成测试,同时更适合于去客户方演示。

 

备注:

 

1.如使用的是编译类,需添加至jdbc驱动jar包中。

2.如使用的是源码,可直接使用sql语句添加至库中。例:

 

CREATE ALIAS IP_ADDRESS AS $$
import java.net.*;
@CODE
String ipAddress(String host) throws Exception {
    return InetAddress.getByName(host).getHostAddress();
}
$$;
 

 

官方说明文档:

 

User-Defined Functions and Stored Procedures

In addition to the built-in functions, this database supports user-defined Java functions. In this database, Java functions can be used as stored procedures as well. A function must be declared (registered) before it can be used. A function can be defined using source code, or as a reference to a compiled class that is available in the classpath. By default, the function aliases are stored in the current schema.

 

http://www.h2database.com/html/features.html#user_defined_functions

 

分享到:
评论
1 楼 zj1211 2010-06-04  
有没有办法给H2的内建函数创建一个别名, 比如 ifnull ,在sql server 里叫 isnull ,   再比如 current_date 在sql server里叫 getdate , 如果能给这些函数创建别名,那么可以提高兼容性。

    我现在是直接改他的源代码,增加这些函数,但是这不是一个好办法, H2一升级,我又得再整一遍,所以最好的办法是能给这些内建函数创建别名。

相关推荐

    H2Database.rar_H2Database聚合函数_H2数据库函数||_h2数据库修改

    本文档将深入探讨H2Database的聚合函数以及如何进行数据库的修改。 一、H2Database聚合函数 聚合函数在SQL中用于对一组值进行计算,返回单个结果。在H2Database中,常用的聚合函数有以下几种: 1. COUNT():计算...

    h2数据库 jar包 下载 资料

    3. **多种模式**: H2支持多种数据库模式,包括单用户模式、多用户模式(TCP服务器)、内存模式(所有数据都存储在内存中)以及混合模式,这使得它能够适应不同的应用场景。 4. **兼容性**: H2数据库设计时充分考虑...

    H2数据库客户端

    通过执行这个exe文件,用户可以在Windows操作系统上安装H2数据库客户端和服务器,从而方便地管理和操作H2数据库。 安装完成后,用户通常会得到一个命令行界面工具(h2-console)和可能的图形界面工具,用于连接和...

    h2数据库批量导出

    《H2数据库批量导出详解》 H2数据库是一款开源、高性能、轻量级的Java关系型数据库,广泛应用于测试、开发以及嵌入式环境。它支持多种数据库模式,包括MySQL、Oracle等,并且提供了丰富的命令行工具和API,使得...

    H2 Database(H2内存数据库)

    6、H2Database聚合函数.doc 7、H2Database连接配置.doc 8、H2Database数据类型.doc 9、H2Database中文教程.doc 10、H2内存数据库h2部署操作手册.docx 11、H2内存数据库安装与维护.doc 12、H2数据库基础知识.docx 13...

    H2数据库驱动包

    H2数据库驱动包是专为H2数据库设计的连接组件,它使得开发者能够轻松地在应用程序中集成H2数据库,以便进行数据存储、查询和管理。H2数据库是一款开源、轻量级、高性能的关系型数据库,广泛应用于开发测试和小型项目...

    springboot整合h2数据库实战

    Spring Boot 整合 H2数据库实战 Spring Boot 是一个基于 Java 的开源框架,旨在简化 Java 企业级应用程序的开发过程。H2 是一个开源的关系型数据库,采用 Java 语言编写,不受平台的限制。Spring Boot 整合 H2 ...

    启动H2数据库并导入数据库脚本

    1. **H2数据库**: H2是一个完全用Java编写的、支持多种模式(包括单用户模式、服务器模式和嵌入式模式)的关系型数据库。它的特点是速度快、小巧、易于使用,可以在Java应用程序中直接嵌入,也可以作为独立的服务器...

    H2数据库最新稳定版本,平台无关包

    描述中提到的"windows的安装版"指的是针对Windows操作系统的特定打包形式,通常包含一个图形用户界面(GUI)和一些额外的工具,使得在Windows环境下安装和管理H2数据库更为简便。这通常包括一个内置服务器,方便用户...

    H2 Database 教程

    同时也会说明如何通过用户自定义变量、日期和时间处理来优化数据库的使用。另外,H2数据库还支持与多种第三方产品的集成,如Web应用服务器、编程语言、开发工具等。 7. H2数据库工具 H2提供了多种工具辅助数据库...

    h2 数据库 客户端

    **H2数据库客户端详解** H2数据库是一款开源、高性能、轻量级的Java关系型数据库管理系统,它在嵌入式和服务器模式下均表现出色。H2数据库以其易用性、快速性能和全面的SQL支持而受到开发者的青睐,尤其在进行测试...

    h2数据导入mysql数据库(看评论酌情下载)

    h2 数据库导入 MySQL 数据库 h2 数据库导入 MySQL 数据库是指将 h2 数据库中的数据导入到 MySQL 数据库中,以便更好地存储和管理数据。下面将详细介绍 h2 数据库导入 MySQL 数据库的步骤。 首先,需要创建一个 ...

    H2数据库官方文档(English)

    - **用户定义变量**(User-Defined Variables):解释了如何在H2数据库中使用用户定义的变量。 - **日期和时间**(Date and Time):说明了如何在数据库中处理日期和时间数据。 - **集成Spring框架**(Using ...

    H2Database聚合函数.pdf

    H2数据库支持标准的SQL标准,意味着用户可以使用熟悉的SQL语法进行数据库操作。此外,H2数据库还支持集群模式,允许多个节点协同工作,提高数据处理的可靠性和性能。 在H2数据库中,聚合函数(Aggregate Functions...

    h2数据库及h2数据库驱动

    H2数据库是一个轻量级、高性能的开源关系型数据库,完全用Java编写,这使得它具有高度的可移植性,可以在任何支持Java的环境中运行。H2提供了多种运行模式,包括内嵌模式(Embedded Mode)、服务器模式(Server Mode...

    H2数据库demo展示

    9. **丰富的函数和特性**:H2提供了大量的内置函数和存储过程,如全文搜索、空间数据支持、自定义函数等。 在DEMO中,我们可以看到如何简单地使用H2数据库。通常,引入H2数据库的JAR包后,可以通过Java代码创建...

    H2数据库中文资料

    它支持多种数据库模式,包括单用户模式、嵌入式模式、服务器模式等,使得在不同的场景下都能灵活运用。H2数据库以其简单易用、快速启动和强大的功能而受到开发者的青睐。 **1. 数据类型** 在`H2Database数据类型....

    h2数据库安装文件-2021610.zip

    通常,这个压缩包会包含H2数据库的安装程序或者运行所需的JAR文件,以便用户在本地计算机上运行或集成到Java项目中。 解压后的“h2数据库安装文件-2021610.exe”是H2数据库的可执行文件,适用于Windows操作系统。...

    h2 数据库驱动包

    h2 数据库驱动包, 为drools-server 提供数据库支持,放在tomcat lib目录下执行

Global site tag (gtag.js) - Google Analytics