JDBC入门基础,使用步骤

#JDBC入门基础,使用步骤

最近在复习JDBC的知识,先写写JDBC的基础回顾一下。

对于JDBC的理解,JDBC全称Java Database Connectvity,这样写出来就不难理解了,也就是使用java语言来操作数据库。JDBC实际上是定义了一个接口来操作不同的关系型数据库(MySQL、Oracle、DB2),java代码通过JDBC这个接口就可以实现对于这些关系型数据库的操作,各个数据库又提供了各自的驱动jar包,使用不同数据库的驱动jar包就可以通过JDBC来操作不同的数据库。
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表为例
student表
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的使用演示案例就完成了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值