读书人

嵌入式DERBY数据库试工

发布时间: 2012-09-25 09:55:59 作者: rapoo

嵌入式DERBY数据库试用

import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class WwdEmbedded {static String dbName = "HIAPK_DOWNLOAD";static String APK_DOWNLOAD_RECORDS = "HIAPK_DOWNLOAD_RECORDS";static String driver = "org.apache.derby.jdbc.EmbeddedDriver";static String connectionURL = "jdbc:derby:" + dbName + ";create=false";public static void main(String[] args) {try {/* * 载入derby驱动.嵌入式驱动使用这个方式启动derby数据库引擎. 检查初始化动作,检查CLASSPATH路径设置问题 */Class.forName(driver);System.out.println(driver + " loaded. ");} catch (java.lang.ClassNotFoundException e) {System.err.print("ClassNotFoundException: ");System.err.println(e.getMessage());System.out.println("\n    >>> Please check your CLASSPATH variable   <<<\n");}Insert insert = new Insert();Query query = new Query();new Thread(insert, "写入线程").start();new Thread(query, "查询线程").start();try {Thread.currentThread();Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}// ## DATABASE SHUTDOWN SECTION ##/*** * In embedded mode, an application should shut down Derby. Shutdown * throws the XJ015 exception to confirm success. ***/if (driver.equals("org.apache.derby.jdbc.EmbeddedDriver")) {try {DriverManager.getConnection("jdbc:derby:;shutdown=true");System.out.println("Database shut down normally");} catch (SQLException se) {if (se.getSQLState().equals("XJ015")) {System.out.println("Database did not shut down normally");}}}}static class Insert implements Runnable {@Overridepublic void run() {Connection conn = null;// apk 下载记录表String createSql = "create table "+ APK_DOWNLOAD_RECORDS+ "("+ "ID int generated always as identity primary key,AID int,SOFTCODE int,"+ " RECORD varchar(1024)" + ")";String[] createIndexSql = new String[] {"CREATE INDEX IDX_ADR_AID ON " + APK_DOWNLOAD_RECORDS+ "(AID)","CREATE INDEX IDX_ADR_SOFTCODE ON " + APK_DOWNLOAD_RECORDS+ "(SOFTCODE)" };// Beginning of JDBC code sections// ## LOAD DRIVER SECTION ##// Beginning of Primary DB access section// ## BOOT DATABASE SECTION ##try {// Create (if needed) and connect to the databaseconn = DriverManager.getConnection(connectionURL);System.out.println("Connected to database " + dbName);/* * 新建HIAPK_DOWNLOAD表结构和索引 * System.out.println(" . . . . creating table " + * APK_DOWNLOAD_RECORDS); s.execute(createSql); * s.execute(createIndexSql[0]); s.execute(createIndexSql[1]); */// 模拟大数据量插入PreparedStatement psInsert = conn.prepareStatement("insert into " + APK_DOWNLOAD_RECORDS+ "(AID,SOFTCODE,RECORD) values (?,?,?)");doinsert(psInsert);conn.close();System.out.println("Closed connection");// Beginning of the primary catch block: uses errorPrint method} catch (Throwable e) {/* * Catch all exceptions and pass them to* the exception * reporting method */System.out.println(" . . . Exception thrown:");errorPrint(e);}System.out.println("Derby JDBC program ending.");}}// ## DERBY EXCEPTION REPORTING CLASSES ##/*** * Exception reporting methods with special handling of SQLExceptions ***/static void errorPrint(Throwable e) {if (e instanceof SQLException)SQLExceptionPrint((SQLException) e);else {System.out.println("A non SQL error occured.");e.printStackTrace();}} // END errorPrint// Iterates through a stack of SQLExceptionsstatic void SQLExceptionPrint(SQLException sqle) {while (sqle != null) {System.out.println("\n---SQLException Caught---\n");System.out.println("SQLState:   " + (sqle).getSQLState());System.out.println("Severity: " + (sqle).getErrorCode());System.out.println("Message:  " + (sqle).getMessage());// sqle.printStackTrace();sqle = sqle.getNextException();}} // END SQLExceptionPrintprivate static void doinsert(PreparedStatement psInsert)throws SQLException {long currtime = 0;Apk_Download_Record table = new Apk_Download_Record(1, 2, 3, "TEST");for (int i = 0; i < 1000; i++) {currtime = System.currentTimeMillis();psInsert.setInt(1, i);psInsert.setInt(2, table.getSoftcode());psInsert.setString(3, table.getRecord());psInsert.executeUpdate();System.out.println("newline:" + i + "     "+ (System.currentTimeMillis() - currtime));}psInsert.close();}static class Query implements Runnable {@Overridepublic void run() {int index = 0;Connection conn = null;Statement s = null;try {// Create (if needed) and connect to the databaseSystem.out.println("Connected to database " + dbName);conn = DriverManager.getConnection(connectionURL);s = conn.createStatement();ResultSet rs = s.executeQuery("select count(id) from "+ APK_DOWNLOAD_RECORDS);while (rs.next()) {index++;System.out.println(rs.getString(index) + "行");}} catch (Throwable e) {/* * Catch all exceptions and pass them to* the exception * reporting method */System.out.println(" . . . Exception thrown:");errorPrint(e);} finally {try {s.close();conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}

读书人网 >其他数据库

热点推荐