在eclipse中写java项目,简单使用hsqldb数据库--菜鸟教程

本文详细介绍如何在Java项目中使用Eclipse导入HSQLDB,包括加载驱动、建立连接、执行SQL语句创建表、插入数据、查询和删除数据等核心操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你还不知道怎么添加hsqldb到java项目,请参考我的上一篇没人看的博客
在eclipse java项目中导入hsqldb–菜鸟教程

这个使用,我还不怎么熟悉,我本身也是菜鸡一枚,写文章主要是防止自己两天不看的话,遗忘太多…呵呵呵

	String user; //用户名
	String pwd; //密码
	String url;
	Connection con;
	Statement stmt;
	ResultSet rs;

首先先看看怎么初始化的

public void init() { //初始化

		try {
			Class.forName("org.hsqldb.jdbcDriver");// 加载驱动程序
			url = "jdbc:hsqldb:hsql://localhost"; 连接本机的hsqldb的url路径
			user = "sa"; //hsqldb数据库默认的用户名
			pwd = "";  //hsqldb数据库默认的用户 对应的默认的密码

			con = DriverManager.getConnection(url, user, pwd);
			System.out.println("connection");
		} catch (ClassNotFoundException | SQLException e) {
			System.err.println("no connection");
			e.printStackTrace();
		}
	}

程序第一句:
Class.forName(“org.hsqldb.jdbcDriver”);// 加载驱动程序
为什么要这样写,可以参考一位大神写的文章
JDBC采用Class.forName加载驱动的意义

到现在,已经完成了向驱动管理器的注册,也就是说接下来能使用驱动程序了
于是con = DriverManager.getConnection(url, user, pwd);
首先
java.sql.Connection
主要是能与特定数据库的连接(会话),它是一个接口
DriverManager是用于管理一组JDBC驱动程序的基本服务,里面的静态方法getConnection会返回一个与数据库的连接,参数url代表连接本地的 dbc类型的hsqldb数据库,
这条语句就是 用drivermanager加载驱动程序,用url找数据库,用user,pwd登录,并返回当前程序与数据库的接口.

hsqldb图形界面执行简单sql语句

win+r输入cmd,打开dos对话框,cd到hsqldb.jar所在文件夹

输入java -cp .;hsqldb.jar org.hsqldb.server.Server 启动服务器

一定要先启动

双击下载的hsqldb.jar包,会出现图形界面形式的数据库,很方便

示例图
选择服务器
示例图
示例图
创建一张表,名字叫做example,这张表有两列,包括id和name

id的类型是整数,name的类型是字符串(长度小于等于20)

CREATE TABLE example (id INTEGER,name VARCHAR(20))

示例图
INSERT INTO example values (2017,‘qianxi’)

往表中添加一个数据项,ctrl+E执行

示例图
从表中查询数据
示例图
检索整张表
示例图

java项目代码里实现

1.创建一张表

public void create(int id,String name) {
		String sql = "create table example (id integer,name varchar(20))";  //对应的sql的语句
		try {
			stmt = con.createStatement(); //返回一个 可执行sql语句的接口
			stmt.executeUpdate(sql);  //执行sql语句
			stmt.close(); //关闭
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

可以把这些操作连贯成一系列的界面
DriverManager.getConnection()返回与本地hsqldb数据库的连接connection,就是打开数据库的图形界面
示例图
connection.createment()返回上面的command功能
statement.executeUpdate(sql) //执行一个sql语句

2.往表中添加数据项

public void insert(int id, String name) {
		**//方法一**
		String sql = "insert into stu values( " + id + "," + "\'"+ name+"\')";  //注意这里的名字是字符串形式,所以sql语句里也要显示是一个字符串,一定要加转义的单引号
		try {
			stmt = con.createStatement(); //返回能执行的接口
			stmt.executeUpdate(sql);  //执行sql语句
			stmt.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		**//方法二**
		//主要是针对方法一而言,如果变量是字符串,还要考虑单引号的问题,除此之外,只能一个一个的输入,不能形式化,不能符号化的表示
		String sql1 = "insert into stu values(?,?)"; //用?号替代带插入的元素,相当于是一个占位符
		try {
			PreparedStatement stmt = con.prepareStatement(sql1);// 预处理,准备执行sql
			stmt.setInt(1, id); //告诉stmt,第一列数据类型是Int,参数id放在第一列
			stmt.setString(2, name); //告诉stmt,第二列数据类型是String,参数name放在第二列
			stmt.executeUpdate(); //告诉完以后就可以执行了
			stmt.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

执行完create()以后,在hsqldb界面,ctrl+R刷新一下,图形界面上就会有显示新建的表

示例图

执行完insert()后,到hsqldb里面查询一下,找到了刚刚插入的数据项

示例图

3.在表中进行选择

public void select() { //也可以把表名当作一个参数传进来,在这里我直接写了stu表
		String sql = "select * from stu";
		try {
			stmt = con.createStatement(); 	//返回可以执行sql的接口
			rs = stmt.executeQuery(sql);	 //执行sql语句,并返回执行的结果
			while (rs.next()) {		 //对结果集合进行迭代
				int id = rs.getInt("id");  //rs.getInt()表示能返回一个整数,这个语句是,rs取id属性,以Int类型返回结果
				String name = rs.getString("name");//rs.getString()表示能返回一个字符串,这个语句是,rs取name属性,以Int类型返回结果
				System.out.println("id: " + id + " name: " + name);

			}
			stmt.close();
			rs.close();
		} catch (SQLException e) {
			System.out.println("cannot select");
			e.printStackTrace();
		}
	}

ResultSet rs,是一个结果的集合,stmt.executeQuery(sql),由于sql是一条选择语句,所以会有返回值,于是把这个返回值存放在一个专门的集合里,就叫做ResultSet

执行完select,eclipse控制台会输出stu整个表的数据信息
示例图
(如果想限制条件,使用where语句,如sql换成select * from stu where id = 2019)

4.在表中进行删除

public void delete() {
		String sql = "delete from stu where id = 2019";

		try {
			stmt = con.createStatement();
			stmt.executeUpdate(sql);

			stmt.close(); //执行这条sql到此结束
//			con.close();  //千万要注意,如果接下来还有操作,可不要关了接口
		} catch (SQLException e) {
			System.out.println("cannot delete");
			e.printStackTrace();
		}

	}

执行完成后发现hsqldb内数据发生了变化

示例图

最后附上总代码,要小心哦,不能创建两张同名的表,这张表里可以有相同的数据项
还可能有bug

总代码

package 连接hsqldb;

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

public class Try {
	String user;
	String pwd;
	String url;
	Connection con;
	Statement stmt;
	ResultSet rs;

	public static void main(String[] args) {
		Try g = new Try();
		g.init();
		g.delete();
		g.select();
		g.create();
        g.insert(2018, "yiyangqianxi");
		g.stop();
	}

	public void init() { //

		try {
			Class.forName("org.hsqldb.jdbcDriver");// 加载驱动程序
			url = "jdbc:hsqldb:hsql://localhost";
			user = "sa";
			pwd = "";
			con = DriverManager.getConnection(url, user, pwd);
			System.out.println("connection");
		} catch (ClassNotFoundException | SQLException e) {
			System.err.println("no connection");
			e.printStackTrace();
		}
	}

	public void stop() {
		if (con != null)
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
	}

	public void create() {
		String sql = "create table again (id integer,name varchar(20))";
		try {
			stmt = con.createStatement();
			stmt.executeUpdate(sql);
			stmt.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void insert(int id, String name) {
		String sql = "insert into stu values( " + id + "," + "\'" + name + "\')";

		System.out.println(sql);
		try {
			stmt = con.createStatement();
			stmt.executeUpdate(sql);
			stmt.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}

		String sql1 = "insert into stu values(?,?)";
		try {
			PreparedStatement stmt = con.prepareStatement(sql1);// 预处理
			stmt.setInt(1, id);
			stmt.setString(2, name);
			stmt.executeUpdate();
			stmt.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void select() {
		String sql = "select * from stu";
		try {
			stmt = con.createStatement();
			rs = stmt.executeQuery(sql);
			while (rs.next()) {
				int id = rs.getInt("id");
				String name = rs.getString("name");
				System.out.println("id: " + id + " name: " + name);

			}
			stmt.close();
			rs.close();
		} catch (SQLException e) {
			System.out.println("cannot select");
			e.printStackTrace();
		}
	}

	public void delete() {
		String sql = "delete from stu where id = 2019";

		try {
			stmt = con.createStatement();
			stmt.executeUpdate(sql);

			stmt.close();
//			con.close();
		} catch (SQLException e) {
			System.out.println("cannot delete");
			e.printStackTrace();
		}

	}
}

敢问路在何方,路在何方!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值