JDBC
1.Import java.sql.*;
2.加载驱动class.ForName();
3.获取链接Connection
conn=DrivreManager.getConnection();
4.获取PrepareStatement/Statement对象
第一种方式:ps=conn.PrepareStatement(String sql)
PreparedStatement ps = conn.prepareStatement("select * from emp");
ResultSet rs = ps.executeQuery();
第二种方式:ps=conn.createStatement();
ResultSet rs = ps.executeQuery(“select * from emp”);
5.执行语句,获取结构集ResultSet=ps.execute(String sql);
Sql 包中的
接口:Connection,Statement,PrepareStatement,ResultSet
类:DriverManager
Connection:与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。
void |
close() |
void |
commit() |
createStatement() |
|
createStatement(int resultSetType, int resultSetConcurrency) |
|
createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) |
|
prepareStatement(String sql) |
|
prepareStatement(String sql, int autoGeneratedKeys) |
|
prepareStatement(String sql, int[] columnIndexes) |
|
prepareStatement(String sql, int resultSetType, int resultSetConcurrency) |
|
prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) |
|
prepareStatement(String sql, String[] columnNames) |
Statement:用于执行静态 SQL 语句并返回它所生成结果的对象。
在默认情况下,同一时间每个 Statement 对象在只能打开一个 ResultSet 对象。因此,如果读取一个 ResultSet 对象与读取另一个交叉,则这两个对象必须是由不同的 Statement 对象生成的。如果存在某个语句的打开的当前 ResultSet 对象,则 Statement 接口中的所有执行方法都会隐式关闭它
boolean |
|
boolean |
execute(String sql, int autoGeneratedKeys) |
getConnection() |
|
PrepareStatement:SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句
executeQuery() |
boolean |
execute() |
。
void |
clearParameters() |
ResultSet:表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
int |
findColumn(String columnLabel) |
boolean |
first() |
getDate(String columnLabel) |
|
int |
getInt(String columnLabel) |
getString(int columnIndex) |
|
getString(String columnLabel) |
DriverManager:管理一组 JDBC 驱动程序的基本服务。
static Connection |
getConnection(String url) |
static Connection |
getConnection(String url, String user, String password) |
static Connection |
getConnection(String url, Properties info) |
普通方式:
public class DBUtils {
public static void main(String[] args) {
//---创建连接
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@10.25.129.168:1521:orcl";
String user="scott";
String password="tiger";
Connection conn= DriverManager.getConnection(url,user,password);
//System.out.println(conn);
//创建数据库的连接对象
//预编译对象,作用是:将sql进行预编译,送到数据库进行执行,并且能获得到返回的结果集
//PreparedStatement ps = conn.prepareStatement("select * from emp");
//查询数据库的信息;
//ResultSet rs = ps.executeQuery();
//while(rs.next()){
//System.out.println("员工编号是:"+rs.getInt("empno")+"员工姓名"+rs.getString("ename"));
//}
//向数据库中插入数据
//PreparedStatement ps = conn.prepareStatement("insert into emp(empno,ename)values(?,?)");
//ps.setInt(1, 1245);
//ps.setString(2, "doudou");
//int i = 0;
//i = ps.executeUpdate();
//if(i!=0){
//System.out.println("插入成功");
//}else{
//System.out.println("插入失败");
//}
//修改数据库中的数据
//PreparedStatement ps = conn.prepareStatement("update emp set ename=? where empno=?");
//ps.setString(1, "wahaha");
//ps.setInt(2, 1245);
//ps.executeUpdate();
//int i = 0;
//i = ps.executeUpdate();
//if(i!=0){
//System.out.println("修改成功");
//}else{
//System.out.println("修改失败");
//}
//删除数据库中的数据
//PreparedStatement ps = conn.prepareStatement("delete emp where empno=?");
//ps.setInt(1,9527);
//int i = 0;
//System.out.println(i);
//if(i!=0){
//System.out.println("删除成功");
//}else{
//System.out.println("删除失败");
//}
//conn.close();
//数据持久化
PreparedStatement ps = conn.prepareStatement("select * from emp");
List<Emp> l = new ArrayList<Emp>();
ResultSet rs = ps.executeQuery();
while(rs.next()){
Emp e = new Emp();
e.setEmpno(rs.getInt("empno"));
e.setEname(rs.getString("ename"));
l.add(e);
}
conn.close();
ps.close();
rs.close();
//PreparedStatement pss = conn.prepareStatement("select * from emp");
for(int i=0;i<l.size();i++){
Emp e = l.get(i);
System.out.println("员工编号:"+e.getEmpno()+",员工姓名:"+e.getEname());
}
} catch (Exception e) {
System.out.println("驱动没有连接上");
e.printStackTrace();
}
}
}
配置文件方式:
package com.neusoft.utils;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DBUtils {
private static Properties p = new Properties();
static{
try {
p.load(DBUtils.class.getResourceAsStream("init.properties"));
} catch (IOException e) {
System.out.println("配置文件没有找到");
}
}
//创建连接数据库方法
public static Connection getConnection(){
Connection conn = null;
String ip = p.getProperty("ip").trim().toLowerCase();
String port = p.getProperty("port").trim().toLowerCase();
String dbname = p.getProperty("dbname").trim().toLowerCase();
String dbtype = p.getProperty("dbtype").trim().toLowerCase();
String username = p.getProperty("username").trim().toLowerCase();
String password = p.getProperty("password").trim().toLowerCase();
if(dbtype.equals("oracle")){
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
System.out.println("驱动类没找到");
}
//获取连接
StringBuffer url = new StringBuffer();
url.append("jdbc:oracle:thin:@");
url.append(ip);
url.append(":");
url.append(port);
url.append(":");
url.append(dbname);
try {
conn = DriverManager.getConnection(url.toString(),username,password);
} catch (SQLException e) {
System.out.println("数据库的连接项错误");
}
}
if(dbtype.equals("mysql")){
}
if(dbtype.equals("sqlserver")){
}
return conn;
}
//关闭数据库中的连接对象
public static void colse(Connection conn,PreparedStatement ps,ResultSet rs){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}