#JDBC入门基础,使用步骤
最近在复习JDBC的知识,先写写JDBC的基础回顾一下。
对于JDBC的理解,JDBC全称Java Database Connectvity,这样写出来就不难理解了,也就是使用java语言来操作数据库。JDBC实际上是定义了一个接口来操作不同的关系型数据库(MySQL、Oracle、DB2),java代码通过JDBC这个接口就可以实现对于这些关系型数据库的操作,各个数据库又提供了各自的驱动jar包,使用不同数据库的驱动jar包就可以通过JDBC来操作不同的数据库。
##JDBC入门基础使用步骤
一、导入驱动jar包到工程下
- 复制mysql-connector-java-5.0.8-bin.jar到libs目录下
- 右键–>Add As Library
二、注册驱动
Class.ForName("com.mysql.jdbc.Driver");
三、获取数据库连接对象 Connection
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db","user","password")
//如果是本机
//Connection conn = DriverManager.getConnection("jdbc:mysql:///db","user","password")
//db为数据库名,user为用户,password为密码
四、定义sql
String sql = "select *from student";//sql语句
五、获取执行sql的对象 Statement
Statement stmt = conn.CreateStatement();
六、执行sql
ResultSet rs = stmt.executeQuery(sql); //查询
//int count= stmt.executeUptate(sql); //返回的是受影响的行数
七、处理结果
while (rs.next())
{
//获取数据
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
}
//system.out.printl(count);
八、释放资源
rs.close();//最后申请的先释放
stmt.close();
conn.close();
##操作案例
以操作student表为例
1、src目录下新建domain包,创建stu类,封装对应stu表的JavaBean
package domain;
//封装对应stu表的JavaBean
public class stu {
private int id;
private String name;
private int age;
private String sex;
private int math;
private int english;
private String address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public int getEnglish() {
return english;
}
public void setEnglish(int english) {
this.english = english;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "stu{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", math=" + math +
", english=" + english +
", address='" + address + '\'' +
'}';
}
}
2、建立一个配置文件,记录数据库连接对象的信息,操作不同的数据库直接修改配置文件就可以了,避免修改代码。IDEA中创建配置文件:
src目录下右键//new//Resource Bundle//jdbc.properties
url = jdbc:mysql:///db1
user = root
password = root
driver = com.mysql.jdbc.Driver
3、抽取工具类,避免大量重复的代码
src下面新建一个包util,在里面创建一个JDBCUtils这样一个工具类
注册驱动,获取连接对象,释放资源直接写到工具类中
package util;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;
/**
* jdbc工具类
*/
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String driver;
/**
* 文件的读取,只需要读取一次即可拿到这些值。使用静态代码块
*/
static {
//读取文件资源
try {
//1、创建properties集合类
Properties pro = new Properties();
//获取src路径下的文件的方式 ClassLoader类加载器
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
URL res = classLoader.getResource("jdbc.properties");
String path = res.getPath();
System.out.println(path);
//2、加载文件
//pro.load(new FileReader("src/jdbc.properties"));
pro.load(new FileReader(path));
//3、获取数据
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
//4、注册驱动
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//获取连接的工具方法,返回连接的对象
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url,user,password);
}
/**
* 释放资源
* @param stmt
* @param conn
*/
public static void close(Statement stmt,Connection conn){
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 重载close方法释放rs
* @param rs
* @param stmt
* @param conn
*/
public static void close(ResultSet rs, Statement stmt, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
4、另外建一个包jdbc,新建一个类JdbcDemo,演示过程
package jdbc;
import domain.stu;
import util.JDBCUtils;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class JdbcDemo {
public static void main(String[] args) {
List list = new JdbcDemo().FindAll();
System.out.println(list);
}
/**
* 测试jdbc工具类
*/
public List<stu> FindAll(){
//Jdbc的查询步骤
Connection conn = null;
Statement stmt = null;
ResultSet rs =null;
List<stu> list = null;
try {
/* 1、注册驱动
2、获取连接对象
直接调用工具类
*/
conn = JDBCUtils.getConnection();
//3、写sql
String sql = "select *from student";
//4、获取执行sql的对象
stmt = conn.createStatement();
//5、执行sql
rs = stmt.executeQuery(sql);
//6、遍历结果集,封装对象,装载集合
stu stu = null;
list = new ArrayList<stu>();
while (rs.next())
{
//获取数据
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
String sex = rs.getString("sex");
int math = rs.getInt("math");
int english = rs.getInt("english");
String address = rs.getString("address");
//创建stu对象,并赋值
stu = new stu();
stu.setId(id);
stu.setName(name);
stu.setAge(age);
stu.setSex(sex);
stu.setMath(math);
stu.setEnglish(english);
stu.setAddress(address);
//装载集合
list.add(stu);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
/*
释放资源,直接调用工具类的close()方法
*/
JDBCUtils.close(rs,stmt,conn);
}
return list;
}
}
到此为止基础的JDBC的使用演示案例就完成了