h2数据库递归查不来数据

h2数据库递归查不来数据,第1张

h2数据递归查不来数据原因如下。

1、可能出现类型不匹配的问题:例如数据库中存储的是int类型的值,前端传递过来的是string类型的值,所以查询不到匹配的数据。

2、还有就是可能存在数据库缓存的问题:这里数据库的二级缓存,即是对数据的crud有影响,每次的crud之后,查询的数据都是从数据库的缓存中获取的数据,不是从数据库中获取的最新的数据。

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控制台实在好用多了。

简单来说就是用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=TRUEMVCC=TRUE",user, password)

Connection conn = DriverManager.getConnection(sourceURL2,user, password)

Statement stat = conn.createStatement()

// use data

ResultSet result = stat.executeQuery("select name from test")


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9994243.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存