创建项目->导包->
libs:额外包目录
我们导好包之后就开始写连接代码了。
package com.squid.jdbc;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import oracle.jdbc.OracleDriver;
/**
* @author Squid 2016-12-27
* @todo JDBC的六大步骤
*/
public class JDBCStep {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet rs = null;
try {
// 1.注册驱动
/*//第一种方式:类加载
Class.forName("oracle.jdbc.OracleDriver");*/
//第二种方式:利用Driver对象
Driver driver=new OracleDriver();
DriverManager.deregisterDriver(driver);
//第三种方式:利用系统参数 -Djdbc.drivers=oracle.jdbc.OracleDriver
// 2.获取连接
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String username = "squid";
String password = "squid";
/*//第一种方式利用DriverManager(常用)
connection = DriverManager.getConnection(url, username, password);*/
//第二种方式直接使用Driver
Properties pro=new Properties();
pro.put("user", username);
pro.put("password", password);
connection=driver.connect(url, pro);
System.out.println(connection + "连接成功");
// 3.获取执行sql语句对象
/*//第一种statement
statement = connection.createStatement();*/
//第二种prepareStatement
PreparedStatement preparedStatement=connection.prepareStatement("select *from tbl_user where id=?");
// 4.执行语句
/*rs = statement
.executeQuery("insert into tbl_user values('5','第五')");*/
/*//配合第三步的第一种
rs = statement.executeQuery("select *from" + " tbl_user");*/
//配合第三步的第二种
preparedStatement.setInt(1, 2);//第一个参数指这是第一个"?",第二个参数是?的指为2,本案例即id=2
//执行查询语句
rs=preparedStatement.executeQuery();
//执行任何语句,如果有结果集返回TRUE没有结果集返回false
boolean execute = preparedStatement.execute();
//执行DML语句:insert update delete,返回值表示受影响的行数
int update=preparedStatement.executeUpdate();
System.out.println(execute);
// 5.处理结果集
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println(id + " " + name);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 6.关闭资源,先开的后关
try {
if (rs != null)
rs.close();
if (statement!=null) {
statement.close();
}
if (connection!=null) {
connection.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
这是在博主已经建立了tbl_user表的情况下,如果我们没有表,刚刚通过控制台新建了一个表并插入了数据容易碰到一个奇怪的问题,那就是插入的数据查询不出来。
其实并不奇怪,这是一种事务回滚机制,就像我们银行卡转账一样,如果发生突发情况或者转出方没有确认是不能够成功的,这是一种事务回滚机制。通过commit提交之后才能够完成保存insert动作。