//创建db.properties文件,来配置对数据库的访问方式
dbname=MySQL /Oracle
//通过读取文件来实现对不同的数据库不同访问
import java.io.*;
import java.util.*;
public class JDBCTestProgrammer1{
public static void main(String[] args) throws Exception{
//通过FileReader读取配置文件
FileReader reader = new FileReader("db.properties");
//创建一个属性对象
Properties prop = new Properties();
//通过属性对象的load方法将reader读取到内存生成一个Map集合
prop.load(reader);
//关闭流
reader.close();
//通过属性对象的getProperty(String key)
String dbname = prop.getProperty("dbname");
//通过java反射机制创建该类
Class c = Class.forName(dbname);
Object obj = c.newInstance();
JDBC jdbc = (JDBC)obj;
jdbc.getConnection();
}
}
JDBC编程六步骤
1:注册驱动
2:获取数据库连接
3:执行数据库操作对象
4:执行SQL语句
5:处理查询结果集
6:关闭资源
第一步:实现注册驱动
1.1)获取驱动对象
1.2) 注册驱动
import java.sql.Driver;
import java.sql.DriverManager;
public class DriverTest {
public static void main(String[] args){
try{
//获取驱动对象
Driver driver = new com.mysql.jdbc.Driver();
//注册驱动
DriverManager.registerDriver(driver);
}
catch(Exception e){
e.printStackTrace();
}
}
}
第二步:获取数据库的连接
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
public class JDBCTest {
public static void main(String[] args){
try{
//1.1获取驱动对象
Driver driver = new com.mysql.jdbc.Driver();
//1.2注册驱动
DriverManager.registerDriver(driver);
//2获取数据库连接
String url = "jdbc:mysql://127.0.0.1:3306/test";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
catch(Exception e){
e.printStackTrace();
}
}
}
第三步:获取数据库的操作对象
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.Connection;
public class JDBCTest{
public static void main(String[] args){
try{
//注册驱动
Driver driver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(driver);
//获取数据库连接
String url = "jdbc:mysql://127.0.0.1:3306/test";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url,user,password);
//3:获取数据库操作对象
Statement stmt = conn.createStatement();
System.out.println(stmt);
}
catch(Exception e){
e.printStackTrace();
}
}
}
第四步:执行SQL语句
import java.sql.Connection;
import java.sql.Driver;
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){
try {
//1注册驱动
Driver driver = new com.mysql.jdbc.Driver();
DriverManager.deregisterDriver(driver);
//2获取数据库连接
String url = "jdbc:mysql://127.0.0.1:3306/JDBC";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
//3获取数据库操作对象
Statement stat = conn.createStatement();
//4执行SQL语句:DQL语句->查询
String sql = "select c_id, c_name , c_zip from customers";
ResultSet rs = stat.executeQuery(sql);
System.out.println(rs);
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
第五步:处理查询结果集
import java.sql.Connection;
import java.sql.Driver;
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){
try {
//1注册驱动
Driver driver = new com.mysql.jdbc.Driver();
DriverManager.deregisterDriver(driver);
//2获取数据库连接
String url = "jdbc:mysql://127.0.0.1:3306/JDBC";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
//3获取数据库操作对象
Statement stat = conn.createStatement();
//4执行SQL语句:DQL语句->查询
String sql = "select c_id, c_name , c_zip from customers;";
ResultSet rs = stat.executeQuery(sql);
System.out.println(rs);
//5处理查询结果
while(rs.next()){
//取数据的第一种方式
String name= rs.getString("c_name");
int id = rs.getInt("c_id");
double zip = rs.getDouble("c_zip");
System.out.println(name+"\t "+id+"\t "+zip);
/*不建议以下写法,程序可读性不强
String name= rs.getString(2);
int id = rs.getInt(1);
double zip = rs.getDouble(3);
System.out.println(name+"\t "+id+"\t "+zip);
*/
}
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
第六步:关闭资源
由于变量作用域的关系,在try里面定义的变量不能在finally里面读取,所以需要局部变量为全局变量
import java.sql.Connection;
import java.sql.Driver;
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 stat = null;
ResultSet rs = null;
try {
//1注册驱动
Driver driver = new com.mysql.jdbc.Driver();
DriverManager.deregisterDriver(driver);
//2获取数据库连接
String url = "jdbc:mysql://127.0.0.1:3306/JDBC";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
//3获取数据库操作对象
stat = conn.createStatement();
//4执行SQL语句:DQL语句->查询
String sql = "select c_id, c_name , c_zip from customers;";
rs = stat.executeQuery(sql);
System.out.println(rs);
//5处理查询结果
while(rs.next()){
//取数据的第一种方式
String name= rs.getString("c_name");
int id = rs.getInt("c_id");
double zip = rs.getDouble("c_zip");
System.out.println(name+"\t "+id+"\t "+zip);
/*不建议以下写法,程序可读性不强
String name= rs.getString(2);
int id = rs.getInt(1);
double zip = rs.getDouble(3);
System.out.println(name+"\t "+id+"\t "+zip);
*/
}
}
catch (SQLException e) {
e.printStackTrace();
}
finally{
//6关闭资源 倒叙关闭
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stat != null){
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
附:执行DML语句 增删改
import java.sql.Connection;
import java.sql.Driver;
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 stat = null;
int count = 0;
try {
Driver driver = new com.mysql.jdbc.Driver();
DriverManager.deregisterDriver(driver);
String url = "jdbc:mysql://127.0.0.1:3306/jdbc";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
stat = conn.createStatement();
//执行SQL语句 :DML语句->insert update delect
String sql_ins = "insert into t_user(name) values ('aaa')";
count = stat.executeUpdate(sql_ins);
String sql_update = "update t_user set name = 'lll' where id = 1";
count = stat.executeUpdate(sql_update);
String sql_del = "DELETE FROM t_user where name = 'aaa'";
count = stat.executeUpdate(sql_del);
System.out.println(count);
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
转载于:https://blog.51cto.com/meyangyang/1971378