TimesTen支持用JDBC连接,这是一个非常吸引人的特性,这意味着连接TimesTen的代码和连接传统的关系型数据库的代码几乎没有区别。

其实根本的原因在于TimesTen也是关系型数据库,只不过在内存运行而已,对于SQL-92标准完全支持,因此开发者的学习成本非常之低。

事实上,TimesTen对于Java开发者提供的文档也非常简单,只有一个电子文档,即Java Developer’s
Guide。总共110页已经够少,而入门则仅需要看第2章Working with TimesTen Databases in JDBC中的Managing
TimesTen database connections 和 Managing TimesTen data 两节即可。

TimesTen安装包中也带示例程序,在 $TT_HOME/quickstart/sample_code/jdbc
目录下,这其中的TTJdbcExamples.java是一个极佳的示例程序。

和使用JDBC连接Oracle相比,连接TimesTen的区别主要在指定连接驱动和DSN上,下面是一个简单的框架:
import java.sql.*; public class HelloWorld { public static void main
(String[]args) {try { Class.forName ("com.timesten.jdbc.TimesTenDriver"); }
catch (ClassNotFoundException ex) { // 输出错误信息 } try { String URL =
"jdbc:timesten:direct:DSN=sampledb_1122;uid=tthr;pwd=timesten"; Connection conn
= DriverManager.getConnection (URL);// 执行SQL语句 conn.close(); } catch
(SQLException ex) {// 输出错误信息 } } }
这里有几点需要说明:
1.
timesten有两个driver,com.timesten.jdbc.TimesTenDriver用于direct连接,com.timesten.jdbc.TimesTenClientDriver
用于C/S连接;前者的性能更好,但Java应用和TimesTen数据库必须在同一主机。
2.
相应的,建立连接的URL格式为jdbc:timesten:{direct|client}:dsn=DSNname;[DSNattributes;],其中DSNattributes和ttisql实用程序中使用的格式是完全一致的。
3. 如果希望用instance administrator连接TimesTen,只需在连接URL中不指定用户名和口令即可

下面给出完整的实例程序HelloWorld.java:
import java.sql.*; public class HelloWorld { public static void main
(String[]args) { try { Class.forName ("com.timesten.jdbc.TimesTenDriver"); }
catch (ClassNotFoundException ex) { System.out.println ("Class Not Found!"); }
try { String URL ="jdbc:timesten:direct:DSN=sampledb_1122;uid=tthr;pwd=timesten"
; int intValues = 12345; Connection conn = DriverManager.getConnection (URL);
Statement stmt = conn.createStatement(); stmt.executeUpdate("CREATE TABLE a(a
int)"); PreparedStatement pstmt = conn.prepareStatement ( "INSERT INTO a VALUES
(?)" ); pstmt.setInt(1, intValues); pstmt.executeUpdate(); ResultSet rs = stmt
.executeQuery("SELECT * FROM a"); int numCols = rs.getMetaData().getColumnCount
(); System.out.println("Fetching data"); System.out.println("Data:"); while (rs
.next()) { for (int i = 1; i <= numCols; i++) { System.out.print("\t"+rs
.getObject(i)); } System.out.println(); } stmt.close(); pstmt.close(); conn
.close (); } catch (SQLException ex) { reportSQLExceptions (ex); } } static int
reportSQLExceptions (SQLException ex) { int errCount =0; if (ex != null) {
System.err.println ("\n--- SQLException caught ---"); ex.printStackTrace ();
while (ex != null) { System.err.println ("SQL State: " + ex.getSQLState ());
System.err.println ("Message: " + ex.getMessage ()); System.err.println ("Error
Code: " + ex.getErrorCode ()); errCount++; ex = ex.getNextException (); System
.err.println (); } } return errCount; } }
编译程序:
$ javac HelloWorld.java
执行程序前,先需要在TimesTen中建立用户:
$ ttisql -v1 sampledb_1122 Command> create user tthr identified by timesten;
User created. Command> grantcreate table, create session to tthr; Command> exit
确认此用户可以连接到TimesTen:
$ ttisql -v1 "dsn=sampledb_1122;uid=tthr;pwd=timesten" Command> exit
运行程序,程序在数据库中执行DDL建表语句,然后插入一条数据,接着使用SELECT读取数据。
$ java HelloWorld Fetching data Data: 12345

从上面的示例程序可以看到,使用Java连接TimesTen非常简单,只需要根据direct或是C/S模式使用指定的Driver,并熟悉DSN的格式即可,剩下的执行SQL语句部分和Oracle没有区别。

So easy, 妈妈再也不用担心我不会连TimesTen了。

技术
©2019-2020 Toolsou All rights reserved,
华为认证HCIA-AI人工智能NOI2019 游记消息质量平台系列文章|全链路排查篇过拟合和欠拟合的形象解释Unity 场景异步加载(加载界面的实现)Faster RCNN系列算法原理讲解(笔记)纽约年轻人计划“重新占领华尔街”:维护散户利益用C++跟你聊聊“原型模式” (复制/拷贝构造函数)初识python之技巧总结篇中级JAVA程序员应该掌握的数据结构知识