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> grant create 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了。

作者:stevensxiao 发表于2016/7/14 21:20:46 原文链接

阅读:0 评论:0 查看评论

java 连接 timesten_极简Java连接TimesTen程序相关推荐

  1. 视频教程-极简Java五:IO流-Java

    极简Java五:IO流 华中科技大学毕业,十余年行业经验,曾带领团队完成CPN客户管理系统,并完成农业银行网站,乐途旅游网等网站的开发,在Java领域有深厚的积累,授课风格深入浅出,直指核心. 夏昊 ...

  2. java nashorn maven_使用mvn创建java工程的极简教程

    最近开始集中精力搞java的开源项目,在这时记录一下使用mvn创建java工程的比较简单的流程,以备不时之需,适用于我等java小白~~~ 使用mvn创建java工程 安装mvn 创建java工程命令 ...

  3. Jenkins部署Java web应用极简指南

    Jenkins快速尝鲜指南 安装Jenkins 配置Jenkins 配置访问路径和端口号 配置Jenkins用户 配置全局工具 配置插件 配置nginx转发 新建构建任务 参数化构建 使用参数 指定分 ...

  4. java stl分解_[STL训练]寻梦-题解(Java代码)极简思路

    注意事项:  insert()方法只能被 StringBuffer 类的对象调用 参考代码: import java.util.Scanner; public class Main { private ...

  5. gassip协议极简java版实现

    最近在看gassip协议,为了加深理解,自己写了一个简单的测试程序. 流程大致如下: 结构:环形结构,每个节点都知道全局总共有几个节点 从0节点开始,寻找N个未接收到流言的节点进行传播(n=每次要传播 ...

  6. Mysql 无法连接的极简操作

    目录 1.检查 2.管理员运行cmd 3.稍微操作一下 4.就完成啦 1.检查 2.管理员运行cmd 3.稍微操作一下 4.就完成啦

  7. ​LeetCode-每日一题 598. 范围求和 II [Java实现] [极速] [极简]​

    给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作. 操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 < ...

  8. Java新手极简指北手册

    在理论上, 理论和实践是没有差异的; 但在实践中, 是有的. In theory, there is no difference between theory and practice. But in ...

  9. 极简主义2020UI设计正流行,欣赏下可临摹的案例模板!

    据统计,人类的平均专注时间已经从2000年的12秒降低到2017年的8秒,且还在持续下降.相较以往,现在更难让人们保持专注和沟通必要的信息.这就是为什么极简主义和简约化是两个不会消失的UX/UI趋势. ...

  10. 响应式极简新闻发布系统源码

    简介: 响应式极简新闻发布系统是基于ASP+ACCESS/MSSQL开发的响应式网站系统,可同时兼容PC端及移动端,也可以通过安装插件来关闭手机端.可以在后台安装大量插件与模板,一键安装实现网站的花样 ...

最新文章

  1. 与14级团队同学的约定
  2. HDU 4614 Vases and Flowers 【线段树】+【二分】
  3. matlab persistent静态变量
  4. java第一次作业计科2班马浩加
  5. activeti user guide 中文_【澳洲大岩石】最好季节发团!省掉800澳币!无比震撼特价 再次应约出发 震撼之旅!一生难忘!全程中文导游!省心放心澳洲青年旅行社...
  6. locate: command not found updatedb: command not found
  7. Python核心编程--学习笔记--8--条件与循环
  8. smtp服务器组件,配置exchange Smtp服务器
  9. icem合并面网格_ICEM CFD混合网格
  10. 深度内幕丨揭秘积分墙新颖反作弊
  11. elementUI Cascader 级联选择器 拼音模糊搜索
  12. 公司要求我提供竞业协议证明材料,而新公司和我原公司存在竞争关系,且我已经入职,请问如何规避违约风险?
  13. 关于FTP服务器出现227 Entering Passive Mode错误的解决思路
  14. (含源码)麻雀搜索算法(SSA)的原理和matlab实现
  15. mathpix snpping公式输入不限次数的方法
  16. 如何创建维恩图,用这个工具就可以了!
  17. 极验:验证码在黑灰产对抗中的角色和实践
  18. 知名休闲服饰品牌——慕尚集团借力泛微实现统一办公、业务协同
  19. 关于二维数组a[i][j]
  20. 腾讯 建造 通天塔 的 帝企鹅

热门文章

  1. Maven安装教程详解
  2. python turtle库下载_turtle库安装
  3. 揭秘网易视频云在数据传输方面的优化实战
  4. CorelDRAWX4的VBA插件开发(十六)颜色配置文件设置与检测
  5. 非直角平面坐标系下的坐标换算
  6. 魅族pro5 刷机 android,魅族Pro5刷通用固件方法教程[多图]
  7. matlab中三种原油问题,基于MATLAB联合站原油加热模糊控制(程序)
  8. 戴尔服务器显示器接口类型,拒绝凌乱桌面 Type-C接口显示器的魅力
  9. Photoshop插件-保存-存为Web所用格式-另存为-脚本开发-PS插件
  10. 微型计算机原理 考试试题,微机原理期末考试试题及答案