Halo Tech

Halo数据库JDBC兼容部分Oracle功能简单演示

Image
Image

JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC 有两部分组成:JDBC API 和 JDBC Driver Interface,提供数据库建立连接、执行sql语句、处理结果。

一、HaloJDBC实现的Driver装载:Halo、Oracle

装载Halo驱动:Class.forName("com.halo.Driver");DriverManager.getConnection("jdbc:halo://IP:1921/数据库", "test", "test");
以OracleURL装载Halo驱动:Class.forName("oracle.jdbc.driver.OracleDriver");DriverManager.getConnection("jdbc:oracle:thin:@IP:1921:数据库", "test", "test")

二、支持Oracle创建Function函数

create [or replace] function functionName  
(
parameterName1 mode1 dataType1,
parameterName2 mode2 dataType2,
...
)
return returnDataType
is/as
begin
function_body
return expression
end functionName;简单示例如下:public static void function(Connection c,Statement stmt) throws SQLException { try { c.setAutoCommit(false); stmt= c.createStatement(); String query = "create or replace function test0\n " + "return varchar2\n" + "as \n" + "BEGIN\n " + "return 'YJKJ';\n" + "END;\n" + "/"; stmt.executeUpdate(query);
stmt.close(); c.close(); } catch (SQLException e) { e.printStackTrace(); System.err.println(e.getClass().getName() + ": " + e.getMessage()); }

二、支持OracleStruct类型简单使用

List object= new ArrayList();Object[] a = new Object[4];  a[0]="a";a[1]="b";a[2]="c";a[3]="d";Object[] b = new Object[4];b[0]="e";b[1]="f";b[2]="g";b[3]="h";object.add(a);object.add(b);
List strucList = new ArrayList();for(Object[] objs : ((ArrayList<Object[]>)object) ){ Struct structDesc = c.createStruct("自定义类型", objs); strucList.add(structDesc); }Array inputArray = stmts.getConnection().createArrayOf("自定义Array类型", strucList.toArray()); Object[] objs = (Object[])(stmts.getArray(1).getArray()); Struct struct= (Struct)objs[0]; Object [] objects =struct.getAttributes(); objects[0].toString()

四、Halo操作Oracle的Clob类型

简单示例如下:1、直接使用getString获取Clob数据类型2、不需要获取到流,读取缓冲区读取内容,循环将字符串取出赋值StringBuffer转成String创建表create table testclob (tClob text);
插入数据insert into testclob values('<xml zxcvbnmasdfghjklqwertyuiop>');public static void Clob(Connection c, Statement stmt) { try { c.setAutoCommit(false); System.out.println("连接数据库成功!"); stmt = c.createStatement(); ResultSet rs = stmt.executeQuery("select * from testclob"); while(rs.next()){ String clob = rs.getString("tClob"); System.err.println(clob); break; } rs.close(); stmt.close(); c.close(); } catch (Exception e) { e.printStackTrace(); System.err.println(e.getClass().getName() + ": " + e.getMessage()); System.exit(0); } System.out.println("查询数据成功!");
}

end

Image

微信号|Halo Tech