gpt4 book ai didi

java - 来自java应用程序的hsqldb

转载 作者:行者123 更新时间:2023-12-02 08:22:09 26 4
gpt4 key购买 nike

我正在用java编写一个桌面应用程序来添加/显示员工。我想到使用hsqldb。我创建了如下程序

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class HSQLDBManualOp {

/**
* @param args
*/
public static void main(String[] args) {
Connection connection = null;
ResultSet resultSet = null;
Statement statement = null;
String createtablestr = "CREATE TABLE employeedetails (EMPNAME varchar(20));";
String insertstr1 = "INSERT INTO employeedetails (EMPNAME) VALUES ('EMPNAME1')";
String insertstr2 = "INSERT INTO employeedetails (EMPNAME) VALUES ('EMPNAME2')";
String insertstr3 = "INSERT INTO employeedetails (EMPNAME) VALUES ('EMPNAME3')";
try {
Class.forName("org.hsqldb.jdbcDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
connection = DriverManager.getConnection("jdbc:hsqldb:file:C:/code/java/march112011aDB", "SA", "");
} catch (SQLException e) {
e.printStackTrace();
}
if (connection == null){
System.out.println(" connection null");
return;
}
try {
statement = connection.createStatement();
statement.executeUpdate(createtablestr);

statement.executeUpdate(insertstr1);

statement.executeUpdate(insertstr2);
statement.executeUpdate(insertstr3);

resultSet = statement.executeQuery("SELECT EMPNAME FROM EMPLOYEEDETAILS");
} catch (SQLException e) {
e.printStackTrace();
}

try {
while (resultSet.next()) {
System.out.println("EMPLOYEE NAME:" + resultSet.getString("EMPNAME"));
}
} catch (SQLException e) {
e.printStackTrace();
}

}

}

当我运行程序时,我得到了输出

EMPLOYEE NAME:EMPNAME1
EMPLOYEE NAME:EMPNAME2
EMPLOYEE NAME:EMPNAME3

然后我更改了插入语句以添加EMPNAME4、EMPNAME5、EMPNAME6

我预计它会打印员工 1,2,3,4,5,6但是当我运行代码时,我只得到了新值。

EMPLOYEE NAME:EMPNAME4
EMPLOYEE NAME:EMPNAME5
EMPLOYEE NAME:EMPNAME6

使用 jdbc:hsqldb:file 时是否无法保留这些值?我还想检查该表是否已经存在。只有在该表不存在时才执行创建表语句。有人能告诉我该怎么做吗?

或者我必须使用服务器模式吗?如果是这样,我如何从程序内创建数据库?

请帮忙..这是我第一次尝试 jdbc/hsqldb..

谢谢

标记

最佳答案

我们在 Java 应用程序中遇到了这个问题。

您的创建表语句创建一个内存表。

除了 SET WRITE_DELAY 0 语句之外,您还需要在插入后执行 SQL COMMITSQL SHUTDOWN当您希望 HSQL 实际上将内存中的行写入配置文件时。

关于java - 来自java应用程序的hsqldb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5274811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com