-
添加
Oracle JDBC
的驱动
在我的电脑上,它的位置是:C:\app\Berlin\oracleDB\product\12.2.0\dbhome_1\jdbc\lib
在此选择ojdbc8_g.jar
,将其添加到依赖库中。 - 编写
java
代码
public class DBConnection {
public static void main(String[] args){
Connection con = null;// 创建一个数据库连接
PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
ResultSet result = null;// 创建一个结果集对象
try{
Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
System.out.println("开始尝试连接数据库!");
String url = "jdbc:oracle:thin:@127.0.0.1:1521:ORCL";// 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库名
String user = "scott";// 用户名,系统默认的账户名
String password = "tiger";// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接
System.out.println("连接成功!");
String sql = "select * from dept where deptno<? AND LOC LIKE ?";// 预编译语句,“?”代表参数
pre = con.prepareStatement(sql);// 实例化预编译语句
pre.setInt(1, 40);// 设置参数,前面的1表示上面预编译语句中的?参数的索引,
pre.setString(2,"NEW%");
result = pre.executeQuery();// 执行查询,注意括号中不需要再加参数
while (result.next())
// 当结果集不为空时
System.out.println("DNAME:" + result.getInt("DNAME") + "\t DNAME:"
+ result.getString("DNAME")+"\t LOC:"
+ result.getString("LOC"));
} catch (Exception e) {
e.printStackTrace();
} finally {
try{
// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
// 注意关闭的顺序,最后使用的最先关闭
if (result != null)
result.close();
if (pre != null)
pre.close();
if (con != null)
con.close();
System.out.println("数据库连接已关闭!");
} catch (Exception e){
e.printStackTrace();
}
}
}
}
DEPT
表的内容:
SQL> select * from dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
而代码中的语句:
String sql = "select * from dept where deptno<? AND LOC LIKE ?";// 预编译语句,“?”代表参数
pre = con.prepareStatement(sql);// 实例化预编译语句
pre.setInt(1, 40);// 设置参数,前面的1表示上面预编译语句中的?参数的索引,
pre.setString(2,"NEW%");
运行结果是:
开始尝试连接数据库!
连接成功!
DEPTNO:10 DNAME:ACCOUNTING LOC:NEW YORK
数据库连接已关闭!
Process finished with exit code 0
3.注意
-
LOC like 'NEW%'
不能写成LOC = 'NEW%'
,前者是模糊查询。 - 应当使用
preparedStatement
来查询(而避免使用Statement
)。在其中注意到有?
,后面将使用setXxxx
方法来填充(如setInt
或setString
等等)。 - 对于填充问号,不要这么写:
select * from dept where ? like 'NEW%'
,.setString(1,"LOC")
。否则会提示java.sql.SQLSyntaxErrorException: ORA-00904: "NEW%": 标识符无效
,也就是说它用来填充参数等,不要填充关键字等。 - 连接Oracle数据库,使用
String url = "jdbc:oracle:thin:@127.0.0.1:1521:ORCL";
语句,其中ORCL
是数据库名。若查询数据库名:- 首先以管理员身份登入:
conn sys/password as sysdba
- 然后输入
select name from v$database;
即可查询。
- 首先以管理员身份登入: