如何用Java程序在H2数据库中自动创建表

如何用Java程序在H2数据库中自动创建表,第1张

package comggdao;

import javasqlConnection;

import javasqlDriverManager;

import javasqlPreparedStatement;

import javasqlResultSet;

import javasqlSQLException;public class BaseDao {

private final String DRIVER = "orgh2Driver";

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 {

ClassforName(DRIVER);

conn = DriverManagergetConnection(URL, USER, PASS);

if (conn != null)

return conn;

} catch (Exception e) {

eprintStackTrace();

}

return null;

} /

关闭动态连接

@param conn

@param ps

/

@SuppressWarnings("unused")

protected void closeLink(Connection conn, PreparedStatement ps) {

if (conn != null)

try {

connclose();

} catch (SQLException e) {

eprintStackTrace();

}

if (ps != null)

try {

psclose();

} catch (SQLException e) {

eprintStackTrace();

}

} /

关闭动态连接(重载方法)

@param conn

@param ps

@param rs

/

@SuppressWarnings("unused")

protected void closeLink(Connection conn, PreparedStatement ps, ResultSet rs) {

if (conn != null)

try {

connclose();

} catch (SQLException e) {

eprintStackTrace();

}

if (ps != null)

try {

psclose();

} catch (SQLException e) {

eprintStackTrace();

}

if (rs != null)

try {

rsclose();

} catch (SQLException e) {

eprintStackTrace();

}

} // protected boolean insertDelete(String sql) {

// try {

// ps = thisgetConn()prepareStatement(sql);

// if (ps != null)

// return psexecute();

// } catch (SQLException e) {

// eprintStackTrace();

// } finally {

// thiscloseLink(conn, ps);

// }

// return false;

// }

//

// static public void main(String[] args) {

// BaseDao b = new BaseDao();

// Systemoutprintln(binsertDelete("create table AAA(Id int primary key,name varchar,sex varchar age int)"));

// }}

create tablespace lfjc

datafile 'D:\oracle\product\1020\oradata\orcl\lfjcdbf'

size 50m

autoextend on

next 50m maxsize 20480m

extent management local;

在2中的路径就是你安装oracle的oradata的路径,lfjc是表空间名称

nodejs的模块机制,如果大家对nodejs模块机制还不了解,可以再去对应的文章看一下。之前也说了,要写一系列关于nodejs的文章,那npm作为nodejs的包管理工具,就必须要深入学习一下,好好了解它的实现原理,正所谓工欲善其事必先利其器,今天我们就好好分析一下npm的启动逻辑,为后续其他npm命令打下基础。我们知道npm用于在nodejs技术栈对CommonJS模块进行增删改查,然而npm其本身同样也是一个CommonJS模块,也可以通过npm命令对其进行增删改查,它同样遵守模块的规范,以npm@70为例(下面所有的分析都是基于70版本,该版本较之前的版本从整体执行逻辑上做了较大的重构,代码逻辑更清晰,更易维护和扩展),我们直接来看下它的packagejson,会发现在bin字段里,npm作为可执行命令,其逻辑入口是基于bin/npm-clijs文件,尽然找到入口,话不多说,我们直接从这个入口触发。

核心启动原理

为了更好的分析整个npm启动逻辑,直接vscode debug走起。我为了不在全局npm包下做调试,因为可能需要改动一下npm包里的代码来更好的调试,所以就本地安装了npm包,直接利用全局安装的npm包也是可以的。直接indexjs里require('npm/bin/npm-cli'),这里以npm i nopt --no-package-lock为例子贯串全文。创建launchjson,打上断点,F5调试开始走起!

要在Android系统中 *** 作SQLite数据库,是通过Android的核心类SQLiteDatabase类来实现的,通常情况下为了数据库升级的需要以及使用方便,会选择继承SQLiteOpenHelper抽像类,但是SQLiteOpenHelper会将数据库文件创建在一个固定的目录(内存的/data/data/<package name/databases>目录中),如果想使用已经存在的数据库文件也就是说数据库会和程序一起发布,就得通过使用SQLiteDabase的静态方法OpenOrCreateDatabase()方法来得到SQLiteDabase对象,下面是一个具体 *** 作类:

package netmydao;

import javaioFile;

import javaioFileOutputStream;

import javaioInputStream;

import netmyjokebookR;

import androidappActivity;

import androidcontentContext;

import androiddatabasesqliteSQLiteDatabase;

public class DBHelper {

//得到SD卡路径

private final String DATABASE_PATH = androidosEnvironment

getExternalStorageDirectory()getAbsolutePath()

+ "/joke";

private final Activity activity;

//数据库名

private final String DATABASE_FILENAME;

public DBHelper(Context context) {

// TODO Auto-generated constructor stub

//这里直接给数据库名

DATABASE_FILENAME = "jokebookdb3";

activity = (Activity)context;

}

//得到 *** 作数据库的对象

public SQLiteDatabase openDatabase()

{

try

{

boolean b = false;

//得到数据库的完整路径名

String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;

//将数据库文件从资源文件放到合适地方(资源文件也就是数据库文件放在项目的res下的raw目录中)

//将数据库文件复制到SD卡中 File dir = new File(DATABASE_PATH);

if (!direxists())

b = dirmkdir();

//判断是否存在该文件

if (!(new File(databaseFilename))exists())

{

//不存在得到数据库输入流对象

InputStream is = activitygetResources()openRawResource(

Rrawjokebook);

//创建输出流

FileOutputStream fos = new FileOutputStream(databaseFilename);

//将数据输出

byte[] buffer = new byte[8192];

int count = 0;

while ((count = isread(buffer)) > 0)

{

foswrite(buffer, 0, count);

}

//关闭资源

fosclose();

isclose();

}

//得到SQLDatabase对象

SQLiteDatabase database = SQLiteDatabaseopenOrCreateDatabase(

databaseFilename, null);

return database;

}

catch (Exception e)

{

Systemoutprintln(egetMessage());

}

return null;

}

}

写完这个类之后,就能得到SQLiteDatabase对象,就能对数据库 *** 作了。

以上就是关于如何用Java程序在H2数据库中自动创建表全部的内容,包括:如何用Java程序在H2数据库中自动创建表、oracle数据库创建表空间、数据库启动代码npm等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9544768.html

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

发表评论

登录后才能评论

评论列表(0条)

保存