oracle JDBC连接数据库

来源:互联网 发布:办公平台软件 编辑:程序博客网 时间:2024/05/19 22:47

一:JDBC是什么

JDBC全称:java database connectivity ,是sun公司提供的Java连接数据库的标准规范。

二:怎么连接数据库

连接数据库有5步:

1.加载驱动

2.得到与数据库的连接

3.创建执行sql语句的对象

4.执行sql语句

5.处理得到的结果集(只有查询语句才有)

6.关闭资源


1.加载驱动

Class.forName("oracle.jdbc.driver.OracleDriver");

2.得到与数据库的连接

在加载好驱动后,DriverManager的getConnection方法就可以获得与数据库的连接

Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","scott","123456");

第一个参数:jdbc与数据库连接的协议,第一个统一都是jdbc,第二个数据库的名字,第三个oracle数据库有,mysql数据库没有,第四个是ip地址,端口号,数据库标志

第二个参数:用户名

第三个参数;密码


数据库的连接有三种方式:上面是第一种方式,

第二种方式,此方式使用properties类,该类可以存储配置文件。

使用getConnection(String url,Properties info)方法得到connection对象

public static Connection getConnection() throws ClassNotFoundException,SQLException{Properties info=new Properties();Class.forName("oracle.jdbc.driver.OracleDriver");info.setProperty("user", "scott");info.setProperty("password", "123456");Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL",info);return conn;}

第三种方式;

使用getConnection(String url)  试图建立到给定数据库 URL 的连接。

这种url的格式是: jdbc:oracle:<drivertype>:<user>/<password>@<database>

public static Connection getConnection() throws ClassNotFoundException,SQLException{Properties info=new Properties();Class.forName("oracle.jdbc.driver.OracleDriver");Connection conn = DriverManager.getConnection("jdbc:oracle:thin:scott/123456@localhost:1521:ORCL");return conn;}


3.得到执行sql语句的对象

执行sql语句的对象是statement

Statement stmt=conn.createStatement();

4.执行sql语句

stmt.execute("select ename,job from emp where empno=7839");

5.得到结果集并处理结果(对于查询语句而言

我们得到的结果集,里面相当于一个指针的东西,初始是指向第一行的前列

ResultSet rs=stmt.getResultSet();while(rs.next()){System.out.println(rs.getObject("ename"));System.out.println(rs.getObject("job"));}

6.关闭资源

rs.close();stmt.close();conn.close();

整体代码如下:

package testjdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class TestJdbc {public static void main(String[] args) throws SQLException,ClassNotFoundException {// TODO Auto-generated method stub// 1.注册驱动Class.forName("oracle.jdbc.driver.OracleDriver");// 2.获取与数据库的连接Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL", "scott", "123456");// 3.创建可操作的数据库对象Statement stmt = conn.createStatement();// 4.操作sql语句stmt.execute("select ename,job from emp where empno=7839");// 5.得到结果集ResultSet rs = stmt.getResultSet();while (rs.next()) {System.out.println(rs.getObject("ename"));System.out.println(rs.getObject("job"));}// 6.关闭资源rs.close();stmt.close();conn.close();}}

三:优化代码

1.基本优化

Statement中有executeQuery方法,在执行查询语句的时候可以直接使用这个方法,就直接返回结果集。

ResultSet rs = stmt.executeQuery("select ename,job from emp where empno=7839");

对于DMl语句,可以直接使用statement中的executeupdate方法

    int b= stmt2.executeUpdate("insert into emp(empno,ename) values(1104,'是')");       System.out.println(b);
返回值表示它影响的行数

2.深度优化

我们之前执行的查询和更改语句都是sql语句国定的,如果再次准备执行sql语句,就得重新写,很麻烦,有没什么简单的方法了,我们可以多次执行,只写一次。

PreparedStatement实现了statement接口,它可以是sql语句预编译在PreparedStatement中,可以根据我们的需要更改其sql语句的条件等。

PreparedStatement stmt = conn.prepareStatement("select ename,job from emp where empno=?");//问号表示一个占位符,相当于参数,问号是什么类型,相对应的stmt的set方法就使用什么类型,set方法的第一个参数表第几个占位符stmt.setInt(1, 7839);//执行该语句stmt.execute();
所有代码:

package testjdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class TestJdbc {public static void main(String[] args) throws SQLException,ClassNotFoundException {// TODO Auto-generated method stub// 1.注册驱动Class.forName("oracle.jdbc.driver.OracleDriver");// 2.获取与数据库的连接Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL", "scott", "123456");// 3.创建可操作的数据库对象PreparedStatement stmt = conn.prepareStatement("select ename,job from emp where empno=?");// 问号表示一个占位符,相当于参数,问号是什么类型,相对应的stmt的set方法就使用什么类型,set方法的第一个参数表第几个占位符stmt.setInt(1, 7839);// 执行该语句stmt.execute();// 得到结果集ResultSet rs = stmt.getResultSet();while (rs.next()) {System.out.println(rs.getObject("ename"));System.out.println(rs.getObject("job"));}// 6.关闭资源rs.close();stmt.close();conn.close();}}


0 0
原创粉丝点击