Swing 学习二 数据库篇
来源:互联网 发布:java图形界面开发插件 编辑:程序博客网 时间:2024/06/07 16:08
对于数据库的创建、连接、关闭的数据库处理
derby数据库
驱动:org.apache.derby.jdbc.EmbeddedDriver
URL:jdbc:derby:<数据库名称>[;create=true/false];
数据库操作
先通过DriverManager的getConnection获得Connection
再通过Connection的createStatement()获得Statement
再通过Statement的excuteQuery()获得ResultSet
再操作ResultSet
ThreadLocal类
jdk1.2时Java就为多线程提供了一个ThreadLocal类
全称:Thread Local Variable(线程局部量)
作用:为每一个使用该变量的线程都提供一个变量值副本,就好像一个线程完全拥有该变量一样。
import java.io.File;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import javax.swing.JOptionPane;public class JDBC { private static final String DRIVERCLASS = "org.apache.derby.jdbc.EmbeddedDriver";// 数据库驱动 private static final String URL = "jdbc:derby:db_album";// 数据库URL private static final ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>();// 用来保存数据库连接 private static Connection conn = null;// 数据库连接 static { // 通过静态方法加载数据库驱动,并且在数据库不存在的情况下创建数据库 try { Class.forName(DRIVERCLASS); // 加载数据库驱动 File db_album = new File("db_album");// 创建数据库文件对象 if (!db_album.exists()) {// 数据库文件不存在 createDatabase();// 创建数据库 } } catch (Exception e) { e.printStackTrace(); } } private static void createDatabase() throws Exception { String[] sqls = new String[2];// 定义创建数据库的SQL语句 sqls[0] = "create table tb_album (id int not null,father_id int not null,name varchar(20) not null,primary key (id))"; sqls[1] = "create table tb_photo (num varchar(28) not null,album_id int not null,date date not null,title varchar(20) not null,note varchar(200),primary key (num))"; conn = DriverManager.getConnection(URL + ";create=true");// 创建数据库连接 threadLocal.set(conn);// 保存数据库连接 Statement stmt = conn.createStatement();// 创建数据库连接状态对象 for (int i = 0; i < sqls.length; i++) {// 遍历SQL数组创建数据库 stmt.execute(sqls[i]);// 执行SQL语句 } stmt.close();// 关闭数据库连接状态对象 } protected static Connection getConnection() { // 创建数据库连接的方法 conn = (Connection) threadLocal.get(); // 从线程中获得数据库连接 if (conn == null) { // 没有可用的数据库连接 try { conn = DriverManager.getConnection(URL);// 创建新的数据库连接 threadLocal.set(conn); // 将数据库连接保存到线程中 } catch (Exception e) { String[] infos = {"未能成功连接数据库!", "请确认本软件是否已经运行!"}; JOptionPane.showMessageDialog(null, infos);// 弹出连接数据库失败的提示 System.exit(0);// 关闭系统 e.printStackTrace(); } } return conn; } protected static boolean closeConnection() { // 关闭数据库连接的方法 boolean isClosed = true; // 默认关闭成功 conn = (Connection) threadLocal.get(); // 从线程中获得数据库连接 threadLocal.set(null); // 清空线程中的数据库连接 if (conn != null) { // 数据库连接可用 try { conn.close(); // 关闭数据库连接 } catch (SQLException e) { isClosed = false; // 关闭失败 e.printStackTrace(); } } return isClosed; }}
阅读全文
0 0
- Swing 学习二 数据库篇
- Swing 之 JTable学习(二)
- swing JTable学习(二) :DefaultTabelModel
- java swing 学习笔记(二)
- 学习笔记——Swing篇(二)
- awt和swing学习(二)
- java swing学习笔记二(画布Canvas)
- [转]JavaSE学习 Swing(二)
- [转]JavaSE学习 Swing(二)
- java学习值swing编程 (二)
- Java学习笔记之Swing(二)
- java学习篇(二)---卡片布局详解(Swing和awt)
- Java实用经验总结--Swing篇二
- SWING 学习
- Swing 学习
- JAVASE学习笔记:第十章 SWing常用控件类(二)
- Swing学习----------QQ登录界面制作(二)
- Swing学习----------QQ登录界面制作(二)
- gcc编译C++程序
- python -- 类处理与模块
- ACdream 1106 游泳水平有限的瑶瑶 (计算几何)(点到直线的最短距离)
- 有关send() / recv()函数的理解
- 快速浮点开方运算
- Swing 学习二 数据库篇
- 表示数值的字符串
- Oracle 11g Data Guard之主备库切换(switchover不使用DG Broker)
- 自我理解的SVN和GIT
- 专业实习03(续)
- 字体图标的简单使用(一)
- 新手上路之自增(例如i++)
- 使用response对象的write流往浏览器写中文数据乱码
- css中圣杯布局&双飞翼布局(以及css2零碎知识点)