㈠ 可以就用java的io实现一个简单的数据库吗
H2数据库是开源的,非常适合做嵌入式数据库使用,尤其用java编码的时候。
H2的优液毕势:
1、h2采用纯Java编写,因此不受平台的限制。
2、h2只有一个jar文件,十分适合作为嵌入式数据库局埋凳试用。
3、h2提供了桐旅一个十分方便的web控制台用于操作和管理数据库内容。
㈡ 用java 实现 h2数据库和mysql数据库实时数据同步
1、h2数据库你写一个类(例如:insert方法),mysql也写一个my类(例如:insertmysql()),
当往h2数据库执行插入的时候 new ().inser(sql);
new my().insertmysql(sql);
2、也可以直接到数据库操作写存储过程和游标自动同步。
3、使用第三方插件。有很多这样子的平台做企业数据一体化的
㈢ 如何用Java程序在H2数据库中自动创建表
package com.gg.;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class BaseDao {
private final String DRIVER = "org.h2.Driver";
private final String URL = "jdbc:h2:~/test";
private final String USER = "sa";
private final String PASS = "";
protected Connection conn = null;// 数据库连接对象
@SuppressWarnings("unused")
protected PreparedStatement ps = null;// 数据库执行对象
@SuppressWarnings("unused")
protected ResultSet rs = null;// 数据库临时结果集 /**
* 获取数据库连接Connection对象
*
* @return
*/
@SuppressWarnings("unused")
protected Connection getConn() {
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL, USER, PASS);
if (conn != null)
return conn;
} catch (Exception e) {
e.printStackTrace();
}
return null;
} /**
* 关闭动态连接
*
* @param conn
* @param ps
*/
@SuppressWarnings("unused")
protected void closeLink(Connection conn, PreparedStatement ps) {
if (conn != null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (ps != null)
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
} /**
* 关闭动态连接(重载方法)
*
* @param conn
* @param ps
* @param rs
*/
@SuppressWarnings("unused")
protected void closeLink(Connection conn, PreparedStatement ps, ResultSet rs) {
if (conn != null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (ps != null)
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (rs != null)
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
} // protected boolean insertDelete(String sql) {
// try {
// ps = this.getConn().prepareStatement(sql);
// if (ps != null)
// return ps.execute();
// } catch (SQLException e) {
// e.printStackTrace();
// } finally {
// this.closeLink(conn, ps);
// }
// return false;
// }
//
// static public void main(String[] args) {
// BaseDao b = new BaseDao();
// System.out.println(b.insertDelete("create table AAA(Id int primary key,name varchar,sex varchar age int)"));
// }}
㈣ 如何用Java程序启动H2数据库(完整代码)
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.h2.tools.Server;
public class H2Demo {
private Server server;
private String port = "9094";
private String dbDir = "./h2db/sample";
private String user = "zhoujiang";
private String password = "123456";
public void startServer() {
try {
System.out.println("正在启动h2...");
server = Server.createTcpServer(
new String[] { "-tcpPort", port }).start();
} catch (SQLException e) {
System.out.println("启动h2出错:" + e.toString());
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
}
public void stopServer() {
if (server != null) {
System.out.println("正在关闭h2...");
server.stop();
System.out.println("关闭成功.");
}
}
public void useH2() {
try {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:" + dbDir,
user, password);
Statement stat = conn.createStatement();
// insert data
stat.execute("CREATE TABLE TEST(NAME VARCHAR)");
stat.execute("INSERT INTO TEST VALUES('Hello World')");
// use data
ResultSet result = stat.executeQuery("select name from test ");
int i = 1;
while (result.next()) {
System.out.println(i++ + ":" + result.getString("name"));
}
result.close();
stat.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
H2Demo h2 = new H2Demo();
h2.startServer();
h2.useH2();
h2.stopServer();
System.out.println("==END==");
}
}
㈤ 如何访问gerrit的h2数据库
访问gerrit的h2数据库步骤:
1、从 https://code.google.com/p/gerrit/downloads/list 页面下载gerrit的war包到某个目录
2、数据库准备,懒得设置用了默认的H2 DB
3、创建gerrit2用户,初始化
sudo adser gerrit2
sudo su gerrit2
java -jar gerrit.war init -d /home/gerrit2/site
一些交互式提问,默认或自定义,同样懒得设置apache,认证用了 development_become_any_account 选项,反向代理没有;
设置完成就自动启动了~; 如果没有启动手动 ./site/bin/gerrit.sh start
4、创建标准 后台服务连接
sudo ln -snf `pwd`/site/bin/gerrit.sh /etc/init.d/gerrit.sh
sudo ln -snf ../init.d/gerrit.sh /etc/rc3.d/S110gerrit
sudo ln -snf ../init.d/gerrit.sh /etc/rc5.d/S110gerrit
5、登陆http://10.20.20.XX:9080,页面右上角点击become :
注册用户 fullname emailaddress name ssh公钥(.ssh/id_rsa.pub)设置保存,
设置保存后,在客户端验证一下,命令及输出如下:
[$name@$hostname ~]$ ssh -p 29418 [email protected]
**** Welcome to Gerrit Code Review ****
Hi $fullname, you have successfully connected over SSH.
Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:
git clone ssh://$name@$hostName.$domainname:29418/REPOSITORY_NAME.git
Connection to 10.20.20.XX closed.
6、从gerrit服务器,clone代码工
git clone ssh://[email protected]:29418/$repoName.git
7、进入项目目录cd $repoName 安装hook; 钩子的目的是在提交信息中自动创建 'Change-Id:' 标签
scp -p -P 29418 [email protected]:hooks/commit-msg .git/hooks/
8、修改提交
9、push 到gerrit服务器
git push origin HEAD:refs/for/$branchName
#直接git push会失败,原因还不知道~~ ~~
10、push成功后web页面All->open和My->changes标签下面,就可以看到提交的修改了
11、web的review没有approve选项,需要在project的accecss中增加相应权限; 还有后面的verify权限也是类似操作;
㈥ Java如何创建bdb内存数据库
(1)、Windows->Show View->Other…
(2)、选择Data Management->Data Source Explorer,点击OK。
创建Driver
(1)、Window->Preferences
(2)、选择Data Management->Driver Definitions
(3)、点击Add。在Name/Type标签页中,选择Generic JDBC Driver,并修改Driver name为:JDBC Driver。
在JAR List标签页中,加入h2-1.3.164.jar。
在Properties选项页中,配置如下信息:
Connection URL:jdbc:h2:E:\DataBase\yht(路径和文件名,可以自己设置)
Database Name:SAMPLE
Driver Class:org.h2.Driver
User ID:yht(数据库用户名,可以自己设置)
如下图所示:
一路OK返回开发环境。
创建Connections
(1)、File->New->Other…
(2)、选择Connection Profiles->Connection Profile。点击Next。
(3)、选择刚创建的Generic JDBC,并修改Name为:JDBC。点击Next。
(4)、输入密码。第一次输入的为密码,点击Test Connection,查看是否连接成功。
(5)、最后点击Finish:
运行sql脚本
(1)、在环境中打开sql脚本,选择创建的数据库,如下图。
(2)、右击sql文件,选择Execute All。
(3)、成功运行,如下图所示:
获取db格式文件
在路径E:\DataBase\下获取文件:yht.h2.db。
㈦ 怎么远程访问H2数据库的内存模式
简单来说就是用jdbc:h2:mem:h2db来建立内存模式,并建表,
然后jdbc:h2:tcp://192.168.20.141:8082/mem:h2db来访问上面的内存数据库
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.h2.tools.Server;
public class H2Demo {
private Server server;
private String port = "8082";
private static String sourceURL1 = "jdbc:h2:mem:h2db";
private static String sourceURL2 = "jdbc:h2:tcp://192.168.20.141:8082/mem:h2db";
private String user = "shorturl";
private String password = "123456";
public void startServer() {
try {
System.out.println("正在启动h2...");
server = Server.createTcpServer(
new String[] { "-tcpPort", port }).start();
} catch (SQLException e) {
System.out.println("启动h2出错:" + e.toString());
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
}
public void stopServer() {
if (server != null) {
System.out.println("正在关闭h2...");
server.stop();
System.out.println("关闭成功.");
}
}
public void useH2() {
try {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection(sourceURL1,user, password);
Statement stat = conn.createStatement();
// insert data
stat.execute("CREATE MEMORY Table TEST(NAME VARCHAR)");
stat.execute("INSERT INTO TEST VALUES('Hello World')");
//stat.execute("delete mappedURL");
// use data
ResultSet result = stat.executeQuery("select name from test ");
int i = 1;
while (result.next()) {
System.out.println(i++ + ":" + result.getString("name"));
}
result.close();
stat.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void useH2i() {
try {
Class.forName("org.h2.Driver");
//Connection conn = DriverManager.getConnection("jdbc:h2:" + dbDir+";AUTO_SERVER=TRUE;MVCC=TRUE",user, password);
Connection conn = DriverManager.getConnection(sourceURL2,user, password);
Statement stat = conn.createStatement();
// use data
ResultSet result = stat.executeQuery("select name from test");
㈧ 什么是H2数据库
H2是Thomas Mueller提供的一个开源的、纯java实现的关系数据库。
H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库非常方便。
H2最大的用途在于可以同应用程序打包在一起发布,这样可以非常方便地存储少量结构化数据。
它的另一个用途是用于单元测试。启动速度快,而且可以关闭持久化功能,每一个用例执行完随即还原到初始状态。
H2的第三个用处是作为缓存,作为NoSQL的一个补充。当某些场景下数据模型必须为关系型,可以拿它当Memcached使,作为后端MySQL/Oracle的一个缓冲层,缓存一些不经常变化但需要频繁访问的数据,比如字典表、权限表。不过这样系统架构就会比较复杂了。
(8)java连接h2数据库扩展阅读:
H2数据库运行方式:
1、内存模式
数据库只在内存中运行,关闭连接后数据库将被清空,适合测试环境,连接字符串:jdbc:h2:mem:DBName;DB_CLOSE_DELAY=-1,如果不指定DBName,则以私有方式启动,只允许一个连接。
2、嵌入式
数据库持久化存储为单个文件。连接字符串:jdbc:h2:file:~/.h2/DBName;AUTO_SERVER=TRUE。~/.h2/DBName表示数据库文件的存储位置,如果第一次连接则会自动创建数据库。
3、服务模式
H2支持三种服务模式:web server:此种运行方式支持使用浏览器访问H2 Console。
CP server:支持客户端/服务器端的连接方式。
PG server:支持PostgreSQL客户端。
㈨ H2数据库
According to documentation, closing the last connection closes the database and when closing the database, the database is automatically compacted for up to 200 milliseconds
.
I guess these together may cause data loss & corruption when a
single connection is repeatedly created, data altered, connection
closed, new connection created, etc. - eventually resulting in
exception such as "Block not found in id [1, -128, 8, 42] [1.4.186/50]"
when trying to access the DB. Version 1.3.176 (last stable) works fine with this, version 1.4.186 crashes and corrupts data.
The
behavior can be fixed by appending ";DB_CLOSE_DELAY=-1" to the DB URL,
i.e. disabling autoclosing DB when last connection is closed. I though
it might have had something to do with 1.4's new "FS" file locking
protocol, but changing that to old "FILE" doesn't seem to help.
Of
course this is not how a DB connection is typically used - when using a
connection pool, this would go unnoticed - and I found this purely by
accident. But it's a bug anyway, isn't it?
Best Regards,
Joonas
狗哥找的
㈩ h2创建数据库语句
h2创建数据库语句如下:
CREATE TABLE TEST AS SELECT * FROM CSVREAD('test.csv');//csv文件数据创建test表 CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255)) AS SELECT * FROM CSVREAD('test.csv');/创建test表,csv文件相应的列插入到test表相应的字段
H2数据库介绍
常用的开源数据库:H2,Derby,HSQLDB,MySQL,PostgreSQL。其中H2,HSQLDB类似,十分适合作为嵌入式数据库使用,其它的数据库大部分都需要安装独立的客户端和服务器端。
H2的优势:
1、h2采用纯Java编写,因此不受平台的限制。
2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。
3、性能和功能的优势
H2比HSQLDB的最大的优势就是h2提供了一个十分方便的web控制台用于操作和管理数据库内容,这点比起HSQLDB的swing和awt控制台实在好用多了。