今天来学习一下用javafx来开发操作数据库的代码,示例是用oracle10g数据库,开发工具是 netbeans 6 beat 2.
注意:在代码中我会把中文注解删掉,在netbeans 6 beat2 中有个BUG,有中文编译通不过,原工程式也会同时上传.
import java.lang.Thread;
import java.lang.Exception;
import java.sql.*;
//驱动类
var driverClassName = 'oracle.jdbc.OracleDriver';
//驱动url
var jdbcUrl = 'jdbc:oracle:thin:@localhost:1521:orcl';
//用户名
var user = 'chen';
//密码
var password = 'chen';
//定义数据对象
var driver:Driver = null;
var conn :Connection = null;
var stmt :Statement = null;
var rs :ResultSet = null;
var rows :Number;
try {
var thread = Thread.currentThread();
var classLoader = thread.getContextClassLoader();
var driverClass = classLoader.loadClass(driverClassName);
//注册当前数据库驱动
driver = (Driver) driverClass.instantiate();
DriverManager.registerDriver(driver);
//以下代码跟jdbc相似
try {
//获得Connection
conn = DriverManager.getConnection(jdbcUrl, user, password);
stmt = conn.createStatement();
//获得Statement
//创建一个Uuser表
rows = stmt.executeUpdate("CREATE TABLE Uuser(id INT NOT NULL ,UName VARCHAR2(50))");
println("CREATE TABLE rows: {rows}");
//插一条记录
rows = stmt.executeUpdate("INSERT INTO Uuser VALUES(1, 'chen')");
println("INSERT rows: {rows}");
//插另一条记录
rows = stmt.executeUpdate("INSERT INTO Uuser VALUES(2, 'zhan')");
println("INSERT rows: {rows}");
//查询Uuser表
rs = stmt.executeQuery("SELECT * FROM Uuser");
while(rs.next()) {
println("id: {rs.getInt('id')} task: {rs.getString('UName')}");
}
} catch(e:SQLException) {
e.printStackTrace();
} finally {
//ResultSet不为空关闭
if(null <> rs){rs.close();}
//Statement不为空关闭
if(null <> stmt) {
try {
stmt.close();
} catch(e:SQLException) {
e.printStackTrace();
}
}
if(null <> conn){conn.close();}//Connection不为空关闭
}
} catch(e:Exception) {
e.printStackTrace();
}
程序中的源码,如下:
import java.lang.Thread;
import java.lang.Exception;
import java.sql.*;
var driverClassName = 'oracle.jdbc.OracleDriver';
var jdbcUrl = 'jdbc:oracle:thin:@localhost:1521:orcl';
var user = 'chen';
var password = 'chen';
var driver:Driver = null;
var conn :Connection = null;
var stmt :Statement = null;
var rs :ResultSet = null;
var rows :Number;
try {
var thread = Thread.currentThread();
var classLoader = thread.getContextClassLoader();
var driverClass = classLoader.loadClass(driverClassName);
driver = (Driver) driverClass.instantiate();
DriverManager.registerDriver(driver);
try {
conn = DriverManager.getConnection(jdbcUrl, user, password);
stmt = conn.createStatement();
rows = stmt.executeUpdate("CREATE TABLE Uuser(id INT NOT NULL ,UName VARCHAR2(50))");
println("CREATE TABLE rows: {rows}");
rows = stmt.executeUpdate("INSERT INTO Uuser VALUES(1, 'chen')");
println("INSERT rows: {rows}");
rows = stmt.executeUpdate("INSERT INTO Uuser VALUES(2, 'zhan')");
println("INSERT rows: {rows}");
rs = stmt.executeQuery("SELECT * FROM Uuser");
while(rs.next()) {
println("id: {rs.getInt('id')} task: {rs.getString('UName')}");
}
} catch(e:SQLException) {
e.printStackTrace();
} finally {
if(null <> rs){rs.close();}
if(null <> stmt) {
try {
stmt.close();
} catch(e:SQLException) {
e.printStackTrace();
}
}
if(null <> conn){conn.close();}
}
} catch(e:Exception) {
e.printStackTrace();
}
控制台打印结果如下:
init:
deps-jar:
compile:
Copy libraries to C:/Documents and Settings/Administrator/My Documents/NetBeansProjects/JavaFXApplication1/dist/lib.
To run this application from the command line without Ant, try:
java -jar "C:/Documents and Settings/Administrator/My Documents/NetBeansProjects/JavaFXApplication1/dist/JavaFXApplication1.jar" javafxDemo
jar:
compile thread: Thread[AWT-EventQueue-0,6,main]
compile 0.171
run:
compile thread: Thread[AWT-EventQueue-0,6,main]
compile 0.203
CREATE TABLE rows: 0
INSERT rows: 1
INSERT rows: 1
id: 1 task: chen
id: 2 task: zhan
init: 5.938
BUILD SUCCESSFUL (total time: 17 seconds)