您的位置:首页 > 数据库 > Oracle

Java培训-Oracle学习【1】数据库连接

2015-07-23 17:35 537 查看
1.连接ORACLE数据库:

连接放在同一个类的主方法中

package com.softeem.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCTest {

public static void main(String[] args) {
Connection conn=null;
Statement st=null;
ResultSet rs=null;

try {
//数据库连接
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","system","system");
//数据库查询

st=conn.createStatement();
rs=st.executeQuery("SELECT * FROM users");
while(rs.next()){
String stuid=rs.getString("stuid");
String stuname=rs.getString("stuname");
System.out.println(stuid+"\t"+stuname);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
rs.close();
st.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
2.连接与操作分开:
2.1 对数据库连接与关闭的工具类

package com.ming.jdbc;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;

public class DBUtil {

// 定义变量
private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
private static final String url = "jdbc:oracle:thin:@localhost:1521:orcl";
private static final String username = "scott";
private static final String password = "a123";

// 加载驱动
static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

public static Connection connection() {
Connection connection = null;
try {
connection = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}

public static void closeConn(Connection conn) {
if (null != connection()) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

// 重载
public static void closeConn(ResultSet rs, Statement sm, Connection conn) {
try {
if (null != rs) {
rs.close();
}
if (null != sm) {
sm.close();
}
if (null != conn) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2.2 对数据库的操作类
package com.ming.jdbc;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;

public class DBOperation {

/**
* @param sql 创建表的SQL
* @return 表是否创建成功
*/
public static boolean getConn(String sql){
boolean b=true;
Connection conn=DBUtil.connection();
try {
Statement sm=conn.createStatement();
sm.executeUpdate(sql);
} catch (SQLException e) {
b=false;
e.printStackTrace();
}finally{
DBUtil.closeConn(conn);
}
return b;
}

//CRUD  C:create R:read U:update D:delete
public static boolean cudOperation(String sql){
boolean b=false;
Connection conn=DBUtil.connection();
try {
Statement sm=conn.createStatement();
int i=sm.executeUpdate(sql);
if(i>0){
b=true;
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBUtil.closeConn(conn);
}
return b;
}

public static void query(String sql){
Connection conn=null;
try {
conn=DBUtil.connection();
Statement sm=conn.createStatement();
ResultSet rs=sm.executeQuery(sql);
System.out.println("员工号 \t\t"+"员工姓名 \t\t"+"职位  \t\t"+""+"工资  \t\t");
while(rs.next()){
String empno=rs.getString("empno");
String ename=rs.getString("ename");
String job=rs.getString("job");
String sal=rs.getString("sal");
System.out.println(empno+"\t\t"+ename+"\t\t"+job+"\t\t"+sal);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBUtil.closeConn(conn);
}
}

}
2. 对象的序列化
1.创建学生对象
package com.softeem.bean;

import java.io.Serializable;

public class StudentBean implements Serializable {
// 表中的列  与  bean中的字段是一一对应关系
//  student 表
//       student bean  传值  查询结果的封装,一条对应一个对象
//       student dao   操作
//    DAO data access  object  面向数据库的直接操作,增删改查....
//     用户--〉100(控制台), 100-8(service 业务处理) ---> 92(dao)
//    1 出纳 收集数据,计算  签字
//    2 会计 审核                   签字
//    3 总经理                       签字
//    银行转账

// 学号 char(3) primary key,
// 姓名 char(4),
// 性别 char(2),
// 年龄 int,
// 班级 char(5)

private String stuNo;
private String stuName;
private String stuSex;
private int stuAge;
private String stuClass;

public String getStuNo() {
return stuNo;
}

public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}

public String getStuName() {
return stuName;
}

public void setStuName(String stuName) {
this.stuName = stuName;
}

public String getStuSex() {
return stuSex;
}

public void setStuSex(String stuSex) {
this.stuSex = stuSex;
}

public int getStuAge() {
return stuAge;
}

public void setStuAge(int stuAge) {
this.stuAge = stuAge;
}

public String getStuClass() {
return stuClass;
}

public void setStuClass(String stuClass) {
this.stuClass = stuClass;
}

}
2.对学生对象操作
package com.softeem.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.softeem.bean.StudentBean;

/**
* softeem.student
*
* @author Administrator
*
*/
public class StudentDAO {
//  stu 封装数据 并传值
public static void insert(StudentBean stu) {
String sqlString = "insert into student(学号,姓名,性别,年龄,班级) "
+ "values(?,?,?,?,?)";
Connection con = DbUtil.getConn();
try {
//            预编译
PreparedStatement ps = con.prepareStatement(sqlString);
ps.setString(1, stu.getStuNo());
ps.setString(2, stu.getStuName());
ps.setString(3, stu.getStuSex());
ps.setInt(4, stu.getStuAge());
ps.setString(5, stu.getStuClass());

int row = ps.executeUpdate();
System.out.println(row);
} catch (SQLException e) {
e.printStackTrace();
}finally{
DbUtil.close(con);
}
}

public static ArrayList query(String stuNO){
//        无条件 select * from student
String sql = "select * from student where 学号=?";
Connection con = DbUtil.getConn();
ArrayList<StudentBean> students = new ArrayList<StudentBean>();
try {
PreparedStatement  ps= con.prepareStatement(sql);
ps.setString(1, stuNO);
ResultSet rs =  ps.executeQuery();
StudentBean sb = null;
while(rs.next()){
sb = new StudentBean();
String stuNo =rs.getString("学号");
String stuName =rs.getString("姓名");
String stuSex =rs.getString("性别");
int stuAge =rs.getInt("年龄");
String stuClass =rs.getString("班级");
sb.setStuAge(stuAge);
sb.setStuClass(stuClass);
sb.setStuName(stuName);
sb.setStuNo(stuNo);
sb.setStuSex(stuSex);
students.add(sb);
}
} catch (SQLException e) {
e.printStackTrace();
}
return students;

}
}
3.数据库连接池
1.简单操作
package com.softeem.dbcp;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.commons.dbcp.BasicDataSource;

public class DbcpDemo {
// 定义常量
private static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
private static final String USERNAME = "softeem";
private static final String PASSWORD = "softeem";

public static BasicDataSource getDs() {
// 创建一个数据源
BasicDataSource ds = new BasicDataSource();
// set
ds.setDriverClassName(DRIVER);
ds.setUrl(URL);
ds.setUsername(USERNAME);
ds.setPassword(PASSWORD);
// 设置最大连接数
ds.setMaxActive(20);
return ds;
}

public static Connection getCon() {
Connection connection = null;
try {
connection = getDs().getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}

// 关闭 连接 ps rs
public static void close(ResultSet rs, Statement st, Connection con) {
try {
if (rs != null)
rs.close();
if (st != null)
st.close();
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2.使用单例模式
package com.softeem.dbcp;

import java.sql.Connection;
import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;

public class SingleDbcp {

// 定义常量
private static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
private static final String USERNAME = "softeem";
private static final String PASSWORD = "softeem";

private static SingleDbcp singleDbcp;

// 构造器私有化
private SingleDbcp() {
}

public static synchronized SingleDbcp getSingleDbcp() {
if (singleDbcp == null)
singleDbcp = new SingleDbcp();
return singleDbcp;
}

public BasicDataSource getDs() {

// 创建一个数据源
BasicDataSource ds = new BasicDataSource();
// set
ds.setDriverClassName(DRIVER);
ds.setUrl(URL);
ds.setUsername(USERNAME);
ds.setPassword(PASSWORD);
// 设置最大连接数
ds.setMaxActive(20);
return ds;
}

public Connection getCon() {
Connection con = null;
try {
con = getDs().getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}

}
3.使用属性文件
3.1 写属性文件
DRIVER=oracle.jdbc.driver.OracleDriver
URL=jdbc:oracle:thin:@localhost:1521:orcl
USERNAME=scott
PASSWORD=a123
3.2 读取属性文件
package com.softeem.dbcp;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

public class ReadProperties {

public static String url;
public static String driver;
public static String username;
public static String password;
// path 如果文件在工程下面 path=文件名
private static FileInputStream fis = null;
private static  Properties ps = null;

static{
// ctrl+shift+ y(小写 ) x(大写)
try {
fis = new FileInputStream("db.properties");
ps = new Properties();
ps.load(fis);
url = ps.getProperty("URL");
driver = ps.getProperty("DRIVER");
username = ps.getProperty("USERNAME");
password = ps.getProperty("PASSWORD");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3.3 用属性文件操作连接池
package com.softeem.dbcp;

import java.sql.Connection;
import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;

public class SingleDbcp2 {

// 定义常量
static BasicDataSource ds = null;
static {

// 创建一个数据源
ds = new BasicDataSource();
// set
ds.setDriverClassName(ReadProperties.driver);
ds.setUrl(ReadProperties.url);
ds.setUsername(ReadProperties.username);
ds.setPassword(ReadProperties.password);
// 设置最大连接数
ds.setMaxActive(20);
}

public Connection getCon() {
Connection con = null;
try {
con = ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息