一、项目工程

数据库新建表:
create table STUDENT
(
id NUMBER(11) not null,
stu_name VARCHAR2(16) not null,
gender NUMBER(11),
age NUMBER(11),
address VARCHAR2(128)
)
二、连接数据库
查询数据库步骤基本为:
1、导入包:需要包含包含数据库编程所需的JDBC类的包。
2、加载JDBC驱动程序。
3、访问数据库:需要使用DriverManager.getConnection()方法来创建一个Connection对象,它表示与数据库服务器的物理连接。(本文已对该方法进行包装)
3、执行查询:需要使用类型为Statement的对象来构建和提交SQL语句,以在选择的数据库的表中查询数据记录。使用executeQuery()方法来下达select指令以查询数据库,executeQuery()方法会把数据库响应的查询结果存放在 ResultSet类对象中供我们使用。
4、提取数据:执行SQL查询后,可以从表中获取记录。
数据库用户名
private static String USERNAMR = "t01";
数据库口令
private static String PASSWORD = "t01";
驱动包
private static String DRVIER = "oracle.jdbc.OracleDriver";
url格式一般为:jdbc:oracle:thin:@host:port:SID;
private static String URL = "jdbc:oracle:thin:@localhost:1521:ORCL";
url格式解释:
jdbc——以jdbc的方式连接。
oracle——连接的是oracle数据库。
thin——连接时采用thin模式(oracle中有两种模式)。
host ——需要连接的数据库服务器的IP地址。
port——端口。
ORCL——为本机sid,可在数据库 SQL Window 输入 SELECT NAME FROM v$database; 获得。

步骤1:导入包
import java.sql.*;
步骤2:加载JDBC驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver"); ----加载Oracle驱动程序
步骤3:访问数据库
Connection con = null; ----创建一个数据库连接
con = DriverManager.getConnection(url, user, password); ----获取连接
/*****形成可执行的sql语句
PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
String sql = "select * from student where name=?";// 预编译语句,“?”代表参数
pre = con.prepareStatement(sql);// 实例化预编译语句
pre.setString(1, "小茗同学");// 设置参数,前面的1表示参数的索引,而不是表中列名的索引
*/
步骤4:执行sql语句,查询结果
ResultSet result = null; ----创建一个结果集对象
result = pre.executeQuery(); ----执行查询,注意括号中不需要再加参数。 执行查询语句返回的是一个 二维的数据表格。
三、PreparedStatement的使用
String sqlIn = "insert into student values(?,?,?,?,?)";
PreparedStatement pre = con.prepareStatement(sqlIn);
pre.setInt(1, count);
pre.setString(2, Name);
pre.setInt(3, gender);
pre.setInt(4, age);
pre.setString(5, address);
对应插入sql语句中的几个问号所在处,setString(index,values)插入的(索引,值)
四、有关ResultSet
pre = con.prepareStatement(sql); ----实例化预编译语句
result = pre.executeQuery(); ----执行语句返回的是一个二维的数据表格
while(result.next()){ ----如果表中有数据,则从第一行开始,进行行遍历.next()方
法返回值为Boolean,当存在数据行返回true,反之false
count = result.getInt(1) + 1; ----找到插入数据的行数。result.getInt(1)拿到
某行的第一列数据
System.out.println(result.getInt(1));
}
五、代码
connectOracle.class
package contoDb;
import java.sql.*;
public class connectOracle {
//数据库驱动的名字
private static String jdbcName="oracle.jdbc.OracleDriver";
//数据库协议地址
private static String dbUrl = "jdbc:oracle:thin:@localhost:1521:ORCL";
//数据库用户名
private static String dbUser = "t01";
//数据库密码
private static String dbPassword = "t01";
Connection con = null;// 创建一个数据库连接
PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
ResultSet result = null;// 创建一个结果集对象
/**
* 获取Connection对象
*
* @return
*/
public Connection conToDb(){
try{
//步骤2:加载JDBC驱动程序
Class.forName(jdbcName);
//步骤3:访问数据库
con = DriverManager.getConnection(dbUrl, dbUser, dbPassword);// 获取连接
System.out.println("连接成功!");
} catch (ClassNotFoundException e) {
throw new RuntimeException("class not find !", e);
} catch (SQLException e) {
throw new RuntimeException("get connection error!", e);
}
return con;
}
/**
* 释放资源
*/
public void ReleaseResource() {
if (result != null) {
try {
result.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pre != null) {
try {
pre.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/*
* 增
*/
public void addToDb(String Name, int gender, int age, String address){
con = conToDb();
String sql = "select * from student";// 预编译语句,“?”代表参数
String sqlIn = "insert into student values(?,?,?,?,?)";
int count = 0;
try{
pre = con.prepareStatement(sql);// 实例化预编译语句
result = pre.executeQuery(); //执行语句
while(result.next()){ //如果表中有数据,则从第一行开始,进行行遍历
count = result.getInt(1) + 1; //找到插入数据的行数
System.out.println(result.getInt(1));
}
pre = con.prepareStatement(sqlIn);
pre.setInt(1, count); // 设置参数,前面的1表示参数的索引,而不是表中列名的索引
pre.setString(2, Name);
pre.setInt(3, gender);
pre.setInt(4, age);
pre.setString(5, address);
result = pre.executeQuery();
}catch (SQLException e) {
e.printStackTrace();
} finally {
ReleaseResource();
}
}
/**
* 向数据库中查询数据
*/
public void SelectData() {
con = conToDb();
String sql = "select * from student where 1 = 1";
try {
pre = con.prepareStatement(sql);
result = pre.executeQuery();
while (result.next()) { //从第一行开始,行遍历
String id = result.getString("id"); //拿到第一行id列数据
String name = result.getString("stu_name");
String gender = result.getString("gender");
String age = result.getString("age");
String address = result.getString("address");
System.out.println(id + "\t" + name + "\t" + gender + "\t"
+ age + "\t" + address); //输出第一行数据
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
ReleaseResource();
}
}
/**
* 向数据库中删除数据
* @param stuName:根据姓名删除数据
*/
public void DeleteData(String Name) {
con = conToDb();
String sqlStr = "delete from student where stu_name=?";
System.out.println(Name);
try {
// 执行删除数据操作
pre = con.prepareStatement(sqlStr);
pre.setString(1, Name);
pre.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
ReleaseResource();
}
}
/**
* 向数据库中修改数据
* @param stuName:学生姓名,根据此值查询要修改的某行值
* @param gender
* @param age
* @param address
*/
public void UpdateData(String stuName, int gender, int age, String address) {
con = conToDb();
String sql = "select id from student where 1 = 1 and stu_name = ?";
String sqlStr = "update student set stu_name=?,gender=?,age=?,address=? where id=?";
int count = 0;
try {
// 计算数据库student表中数据总数
pre = con.prepareStatement(sql);
pre.setString(1, stuName);
result = pre.executeQuery(); //执行查询语句返回的是一个二维的数据表格
while (result.next()) { ////遍历行,next()方法返回值为Boolean,当存在数据行返回true,反之false
count = result.getInt(1);
System.out.println(result.getInt(1));
}
// 执行插入数据操作
pre = con.prepareStatement(sqlStr);
pre.setString(1, stuName);
pre.setInt(2, gender);
pre.setInt(3, age);
pre.setString(4, address);
pre.setInt(5, count);
pre.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
ReleaseResource();
}
}
}
test.class
package contoDb;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
connectOracle oo=new connectOracle();
oo.addToDb("王小军",1,17,"北京市和平里七区30号楼7门102");
//测试删除数据操作
//oo.DeleteData("孙中山");
//测试更新数据操作
//oo.UpdateData("孙中山",1,30,"北京市东城区岳山路11号");
//测试查询数据操作
//oo.SelectData();
}
}
五、结果输出



这篇博客介绍了如何使用JDBC连接Oracle数据库。首先,创建数据库表,然后详细阐述了连接数据库的步骤:导入JDBC包,加载驱动,通过DriverManager.getConnection()建立连接,用Statement执行查询并使用ResultSet提取数据。还提到了PreparedStatement的使用和ResultSet的相关操作。最后提供了代码示例。
824

被折叠的 条评论
为什么被折叠?



