公共类 定义数据库连接和关闭:
package com.java.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBConnection {
/**
* 一、JDBC 的驱动分类:
* 比较常见的驱动程序有四类:
* jdbc-odbc 桥驱动
* jdbc 本地驱动
* jdbc 网络驱动
* 本地协议纯jdbc 驱动
* 开发中常见: jdbc-odbc 、网络jdbc 连接、纯jdbc连接
*
*
*
* 二、java 为JDBC 提供的 API接口有:
* java.sql.Connection --用于处理与特定数据库连接;
* java.sql.DriverManager -- 处理驱动程序的加载和数据库的连接;
* java.sql.Statement -- 用于在指定连接中处理sql语句;
* java.sql.ResultSet -- 用于操作数据库操作的结果集,用户通过对结果集的操作完成对数据库的访问
*
* 其中:java.sql.Statement 接口下包括两个接口:
* java.sql.PreparedStatement -- 处理预编译的Sql语句;
* java.sql.CallableStatement -- 用于处理数据库的存储过程;
*
* 三、利用jdbc创建数据库连接公共类
*
* 常用的数据库驱动和url:
* oracle 数据库中:
* oracle database driver :
* oracle.jdbc.driver.OracleDriver
* oracle database URL :
* jdbc:oracle:thin:@localhost:1521:oracle
* SQL server 数据库中:
* Sql Server database driver:
* com.microsoft.sqlserver.jdbc.SqlServerDriver
* Sql Server database url:
* jdbc:sqlserver://ip:1433:databasename=dbname
* 四、数据库连接的步骤:
* 1、、 定义数据库驱动:
* private static final String driver = "oracle.jdbc.OracleDriver";
* 2、 定义数据库url资源对象:
* private static final String url ="jdbc:oracle:thin:@localhost:1521:oracle";
* 3、: 设定数据库连接管理用户及密码:
* private static final String username = "scott";
* private static final String password = "A2i0a0o8";
* 4、 加载数据库驱动:
* Class.forName(driver);
* 5、创建数据库连接:
* //一般数据库连接单独作为公共类,所以要设置为全局对象,在需要连接时,调用方法就行
* Connection conn = DriverManager.getConnection(url, username, password);
* // 在处理类中调用以连接数据库;
* Connection conn = DBConnection.getConnection(); //这里的getConnection()是自定义的方法
*
* 6、创建创建Statement 对象,用于处理指定的sql语句
* Statement stmt = conn.createStatement();
* 7、创建sql语句字符串:
* String sql = "SQL语句"
* 8、创建ResultSet 对象,对数据库操作,返回一个结果集:
* ResultSet rs = stmt.executeQuery(sql);
* ResultSet rs = stmt.executeUpdate(sql);
* 9、对结果集操作以完成对数据库的访问操作
* while(rs.next()){ //处理结果集 //rs.get**取操作列 }
* 10、关闭Statement 对象和数据库关闭;//这里可以在数据库连接中声明一个关闭方法,每次进行完数据库操作后,调用此方法关闭
* stmt .close();
* conn.close();
*/
/*------数据库连接----------*/
//定义数据库驱动程序
// 私有的 ,静态的,固定的 jdbc驱动
private static final String driver = "oracle.jdbc.OracleDriver";
//创建数据库URL对象,定义连接地址
//私有静态常量的数据库实例(本地数据库),可以替换成别的
private static final String url ="jdbc:oracle:thin:@localhost:1521:oracle";
// 定义数据库连接用户名及密码:
private static final String username = "scott";
private static final String password = "A2i0a0o8";
//声明数据库连接对象,初始化为空
private static Connection conn = null;
// 自定义连接方法
public static Connection getConnection(){ // Connection 为返回类型,getConnection 方法名
try {
//利用反射机制来创建对象
Class.forName(driver); //加载驱动程序
//利用java为jdbc 提供的接口DriverManager 来实现数据库连接
conn = DriverManager.getConnection(url, username, password); //创建连接
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
// 自定义数据库关闭方法
public static void close(){
try {
Statement stmt = conn.createStatement(); //创建Sql语句对象
if(stmt != null){
stmt.close();
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if (conn != null){
try {
conn.close();
System.out.println("数据库已关闭");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else{
System.out.println("无数据库连接!");
}
}
}
操作测试类,完成对数据的访问操作:
package com.java.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SqlTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
selecttest(); //方法调用
sqltest();
}
public static void selecttest(){
//数据库连接
Connection conn = DBConnection.getConnection();
try {
//创建Statement 对象,用于处理指定的sql语句
Statement stmt = conn.createStatement(); //创建SQL语句对象
String sql = "select emp.ename,emp.job,emp.sal,dept.dname from emp,dept where emp.deptno = dept.deptno";
//创建ResultSet 对象,用于操作数据库操作的结果集
ResultSet rs = stmt.executeQuery(sql); //执行查询处理,返回一个结果集
while(rs.next()){ //处理结果集
//rs.get**取操作列
System.out.println("姓名:"+rs.getString("ename")+"\t职位:"+rs.getString("job")+
"\t薪资:"+rs.getFloat(3)+"\t部门名称:"+rs.getString(4));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
DBConnection.close();
}
}
public static void sqltest(){
Connection conn = DBConnection.getConnection();
try {
Statement stmt = conn.createStatement();
String sql1= "insert into emp(empno,ename,job,sal) values(1002,'周姐','软件测试',3500)";
String sql2 = "update emp set deptno = 30 where empno = 1001";
String sql3 = "delete from emp where empno =900";
//批量操作
stmt.addBatch(sql1);
stmt.addBatch(sql2);
stmt.addBatch(sql3);
//批量执行
stmt.executeBatch();
System.out.println("执行完成!");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
DBConnection.close();
}
}
}