⑴ 用java 实现 h2数据库和mysql数据库实时数据同步
1、h2数据库你写一个类(例如:insert方法),mysql也写一个my类(例如:insertmysql()),
当往h2数据库执行插入的时候 new ().inser(sql);
new my().insertmysql(sql);
2、也可以直接到数据库操作写存储过程和游标自动同步。
3、使用第三方插件。有很多这样子的平台做企业数据一体化的
⑵ 如何用Java代码后台启动H2数据库的内存模式有知道的吗
packagetest;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importorg.h2.tools.Server;
publicclassH2Demo{
privateServerserver;
privateStringport="9094";
privateStringdbDir="./h2db/sample";
privateStringuser="zhoujiang";
privateStringpassword="123456";
publicvoidstartServer(){
try{
System.out.println("正在启动h2...");
server=Server.createTcpServer(
newString[]{"-tcpPort",port}).start();
}catch(SQLExceptione){
System.out.println("启动h2出错:"+e.toString());
//TODOAuto-generatedcatchblock
e.printStackTrace();
thrownewRuntimeException(e);
}
}
publicvoidstopServer(){
if(server!=null){
System.out.println("正在关闭h2...");
server.stop();
System.out.println("关闭成功.");
}
}
publicvoiseH2(){
try{
Class.forName("org.h2.Driver");
Connectionconn=DriverManager.getConnection("jdbc:h2:"+dbDir,
user,password);
Statementstat=conn.createStatement();
//insertdata
stat.execute("CREATETABLETEST(NAMEVARCHAR)");
stat.execute("INSERTINTOTESTVALUES('HelloWorld')");
//usedata
ResultSetresult=stat.executeQuery("selectnamefromtest");
inti=1;
while(result.next()){
System.out.println(i+++":"+result.getString("name"));
}
result.close();
stat.close();
conn.close();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
H2Demoh2=newH2Demo();
h2.startServer();
h2.useH2();
h2.stopServer();
System.out.println("==END==");
}
}
⑶ h2数据库在linux服务器怎么使用
简单来说就是用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; imp...
⑷ 怎么远程访问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 Database 这个数据库能用到真正的大型项目 生产环境吗 , 一般java项目用到的内存数据库用哪个呢
用来缓存消息的内存数据库或Cache,需要满足:
1.能快速方便的进行消息的查询
2.能支持分布式 (网络模式)
3.能支持集群 (单点失效和负载均衡)
4. 支持持久化(自身能持久化, 不需要我们额外的开发)
SQLLite和Derby ,不过不是很确定这两者是否都支撑集群,其他都支持,Derby是用纯java写的,集成在JDK6的安装当中,现在叫JavaDB
⑹ 什么是H2数据库
H2是Thomas Mueller提供的一个开源的、纯java实现的关系数据库。
H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库非常方便。
H2最大的用途在于可以同应用程序打包在一起发布,这样可以非常方便地存储少量结构化数据。
它的另一个用途是用于单元测试。启动速度快,而且可以关闭持久化功能,每一个用例执行完随即还原到初始状态。
H2的第三个用处是作为缓存,作为NoSQL的一个补充。当某些场景下数据模型必须为关系型,可以拿它当Memcached使,作为后端MySQL/Oracle的一个缓冲层,缓存一些不经常变化但需要频繁访问的数据,比如字典表、权限表。不过这样系统架构就会比较复杂了。
(6)javah2内存数据库扩展阅读:
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创建数据库语句
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控制台实在好用多了。