关于JAVA连接ORACLE以及使用的相关知识

来源:互联网 发布:手机淘宝怎么合并付款 编辑:程序博客网 时间:2024/04/28 20:49

JAVA中很多情况下都会使用到数据库,而现在主流数据库中ORACLE是使用较多的,故整理下JAVA对ORACLE的使用相关的知识。

一、注册数据源

首先需要加载数据库驱动,然后根据数据源、用户名&密码获取数据库连接(Connection实例);接下来就可以使用获取到的连接对数据库进行一系列的操作了。实现代码如下:

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID String user="test"; String password="test"; Connection conn= DriverManager.getConnection(url,user,password);


二、操作数据库

在使用数据库连接操作数据库的时候需要注意的是俩个对象:StatementPreparedStatement,下面对这俩货的使用方法进行下总结。

Statement的使用方式:

Statement stmt = null;stmt = conn.createStatement();String strSql = "delete from table";stmt.executeUpdate(strSql);

如果要需要传入参数而且不想写到String对象中也可以使用SingleStatement

Statement stmt = conn.createStatement();String strSql = "delete from table";SingleStatement ssmt = new SingleStatement(strSql);ssmt.setString(1, para);stmt.executeUpdate(ssmt.toString());

PreparedStatement的使用方式:

String updateSql = "update COORD_LINE set x =?,y=? where LINENAME =? AND FILETYPE =? AND USER_ID=? AND REC_DATE=?";PreparedStatement ptmt = conn.prepareStatement(updateSql);ptmt.setString(1, para);dbs.executeUpdate(conn, ptmt);


关于这两个类的区别,主要在于两方面:

一)执行效率

PreparedStatement对象在执行之前会进行预编译,每一种数据库都会对预编译语句提供最大的性能调优,因为预编译语句有可能被重复调用,所以语句在被数据库的编译器变异后的执行代码被缓存了下来,那么下次使用相同的预编译语句调用的时候只要将参数直接传入到编译过的语句执行代码中就可以了。而Statement则不一样,没有数据库会对普通语句编译后的执行代码缓存

二)安全性

预编译语句决定了传入的任何内容不会和原来的语句发生任何匹配关系,这可以防止一些恶意的SQL语句的出现,例如下面这种情况:

String sql = "select * from tb_name where name="+varname+"and passwd="+varpasswd

这种情况下如果传入的varpasswd参数为['or'1'='1]则上述语句会变成以下模样:

select * from tb_name where name= "name" and passwd = '' or '1'='1';