`
ppxieppp
  • 浏览: 50688 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

嵌入式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 {
		@Override
		public 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 database
				conn = 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 SQLExceptions
	static 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 SQLExceptionPrint

	private 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 {

		@Override
		public void run() {
			int index = 0;
			Connection conn = null;

			Statement s = null;
			try {
				// Create (if needed) and connect to the database

				System.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 block
					e.printStackTrace();
				}
			}
		}
	}
}

分享到:
评论

相关推荐

    连接derby数据库方法—附图

    Derby数据库是一种嵌入式关系数据库管理系统,可以嵌入到Java应用程序中,提供了一个轻量级、可靠的数据库解决方案。 连接Derby数据库方法 1. 使用Database模式 在Eclipse中,可以使用Database模式来连接Derby...

    基于嵌入式开源数据库Derby实现信息服务平台

    《基于嵌入式开源数据库Derby实现信息服务平台》这篇文章探讨了如何通过使用开源的嵌入式数据库Derby和Java技术来构建一个高效的信息服务平台。该平台具有简单的配置、跨平台兼容性和高度可移植性的特点。 #### 二...

    JavaSE6.0的Derby嵌入式数据库

    ### JavaSE6.0的Derby嵌入式数据库 #### Derby简介 Derby是由IBM公司最初开发并后来捐赠给Apache软件基金会的一个开源关系型数据库管理系统(RDBMS)。随着JavaSE6.0(代号为Mustang)的发布,Sun公司将其集成到了...

    derby.zip,Derby数据库

    Derby数据库完整压缩包,解压缩即可使用,bat文件在bin文件目录下,驱动程序在lib目录下。 Apache Derby非常小巧,核心部分derby.jar只有2M,所以既可以做为单独的数据库服务器使用,也可以内嵌在应用程序中使用。...

    derby embedded模式设置用户名和密码

    这篇教程将一步步地指导您如何让 Derby 嵌入式数据库支持用户验证。 Derby 嵌入式数据库用户名和密码设置有两种方法: 方法一:配置 derby.properties 文件 通过配置 derby.properties 文件,可以实现对 Derby ...

    derby数据库以及在MyEclipse中的配置

    上网页也可以找到一些资源关于derby数据库的安装配置,但是你看起来会很麻烦,而且比较难以上手。 这是我自己动手实践过的,里面有很多截图方便你理解安装过程,已经电脑上面环境变量的配置,在MyEclipse上面的...

    Derby数据库初级使用文档

    Derby数据库是一款轻量级的关系型数据库管理系统,由Apache软件基金会开发并维护。它是Java编写,完全符合Java Database Connectivity (JDBC) API的,因此非常适合嵌入式应用和小型项目。本文档将详细介绍Derby...

    derby 数据库 eclipse插件

    Derby数据库Eclipse插件是开发人员在Eclipse集成开发环境中使用Apache Derby数据库时的一种便捷工具。Apache Derby,也称为JavaDB,是一个开源的关系型数据库管理系统,完全用Java编写,支持ACID事务、SQL标准以及多...

    嵌入式数据库Apache+Derby开发指南

    嵌入式数据库Apache+Derby开发指南

    derby 数据库开发文档

    Apache Derby 是一个强大的、轻量级的嵌入式数据库解决方案,非常适合那些寻求高性能、易于集成和高度可移植性的项目。通过仔细阅读和理解 Derby 开发者指南,开发人员可以充分利用 Derby 的强大功能来构建高质量的...

    derby 数据库驱动jar包

    derby 数据库驱动jar包, 更多其他数据库驱动jar包(包括db2,derby,exasol,h2,jtds,mimer,mysql,nuodb,oracle,postgresql,redshift,sqlite,vertica)请看楼主其他资源贴

    商品出入库例子+derby数据库

    在IT行业中,数据库管理系统是核心组成部分之一,而Apache Derby是一个轻量级、嵌入式的Java关系型数据库,常用于小型应用程序或开发环境中。本项目"商品出入库例子+derby数据库"提供了一个实用的示例,展示了如何在...

    derby 数据库 使用的例子

    Derby被设计为嵌入式数据库,适用于Java应用程序,尤其在桌面应用、测试环境以及小型服务器场景中非常实用。这个压缩包文件"DERBY_PJ"可能包含了关于如何使用Derby数据库的实例和教程。 首先,让我们了解Derby的...

    嵌入式数据库开发指南

    嵌入式数据库是一种轻量级的数据库管理系统,它被设计用于在有限的资源环境下运行,如内存和处理器...通过学习Apache Derby,开发者可以快速掌握嵌入式数据库的基本概念和操作,为后续的数据库开发工作打下坚实的基础。

    内嵌数据库derby 10.6.2开发文档

    Apache Derby是一款开源的、高性能的关系型数据库管理系统,特别适用于嵌入式应用和Web应用程序。版本10.6.2的《开发者指南》提供了深入的技术细节和指导,帮助开发者理解和掌握Derby的核心功能与部署策略。 ### ...

    derby嵌入式数据库连接问题

    derby嵌入式数据库连接问题

Global site tag (gtag.js) - Google Analytics