我制作了一个数据库驱动的Java项目,我在其中操作java程序的数据库(插入/删除)。我必须在我的大学提交它,条件是它必须在他们的计算机上运行。问题是他们不会有我曾经使用过的表/数据库。所以有什么方法可以使它成为可能的数据库独立或者我应该给我所使用的数据库的备份。如果是,那么如何?
答案 0 :(得分:2)
使用H2等嵌入式数据库。只需将h2-xxxxxx-.jar添加到您的应用程序类路径,并在程序启动时启动数据库,如here所述。
更新了示例:
Class.forName("org.h2.Driver");
Connection connection = DriverManager.getConnection("jdbc:h2:mem:test-database-name");
// create table, insert data, query for data ...
connection.prepareStatement("CREATE TABLE cars (id INTEGER AUTO_INCREMENT NOT NULL, name CHAR(20));").execute();
connection.prepareStatement("INSERT INTO cars values (null, 'Volkswagen');").execute();
connection.prepareStatement("INSERT INTO cars values (null, 'Audi');").execute();
ResultSet rs = connection.prepareStatement("SELECT * FROM cars").executeQuery();
while (rs.next()) {
System.out.println(rs.getInt(1) + " | " + rs.getString(2));
}
数据库将在第2行创建,并在程序结束时销毁。访问此数据库独家到您的程序。您可以通过更改第2行的连接网址来更改行为。请在文档中查看此table。
答案 1 :(得分:0)
如果您只需要数据库/表结构,则可以在程序启动时执行类似的SQL命令:
CREATE DATABASE IF NOT EXISTS test-database;
USE test-database;
CREATE TABLE IF NOT EXISTS test-table (id BIGINT PRIMARY KEY, ...);
否则你需要给你的大学一个备份。因此,运行
mysqldump -u root -p --database test-database > test_database.sql
在Konsole中的。创建了一个新文件test_database.sql
,其中包含一些用于创建数据库的SQL命令。要执行这些命令,请运行:
mysql -u root -p < test_database.sql