传统JDBC操作数据库

Posted 小小蔡芽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了传统JDBC操作数据库相关的知识,希望对你有一定的参考价值。

package com.jdbc.example;

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

public class JdbcExample {

    //创建一个数据库的连接
    private static Connection getConnection() {
        Connection connection = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");//加载用户驱动
            String url = "jdbc:mysql://localhost:3306/mybatis";//连接数据库的地址
            String user = "root";//数据库的用户名
            String password = "root";//数据库的密码
            connection = DriverManager.getConnection(url, user, password);//得到一个数据库的连接
        } catch (ClassNotFoundException e) {
            // TODO 自动生成的 catch 块
            System.out.println(JdbcExample.class.getName() + "数据库驱动包未找到!");
            return null;
        } catch (SQLException e) {
            // TODO 自动生成的 catch 块
            System.out.println(JdbcExample.class.getName() + "SQL语句有问题,无法查询成功!");
            return null;
        }
        return connection;//返回该连接
    }


    public User getUser(int id) {
        Connection connection = getConnection();//得到该数据库的连接
        PreparedStatement ps = null;//声明一个null的预处理的Statement
        ResultSet rs = null;//声明一个结果集,用来存放SQL的查询后的结果
        try {
            ps = connection.prepareStatement("select * from user where id=?");//对查询的User表的SQL进行预处理编译
            ps.setInt(1, id);//把参数Id设值到数据的条件中
            rs = ps.executeQuery();//执行查询语句。把结果返回到ResultSet结果集中
            while (rs.next()) {//遍历从结果集中取数
                int user_id = rs.getInt("id");//取出Statement的用户id
                String username = rs.getString("username");//取出Statement的用户名
                Date birthday = rs.getDate("birthday");//取出Statement的生日
                String sex = rs.getString("sex");//取出Statement的性别
                String address = rs.getString("address");//取出Statement的用户地址

                User user = new User();//创建一个User类的实体对象POJO
                user.setId(user_id);//存放在user对象中
                user.setUsername(username);
                user.setBirthday(birthday);
                user.setSex(sex);
                user.setAddress(address);

                return user;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            this.close(rs, ps, connection);
        }
        return null;
    }

    //判断数据库是否关闭
    /***
     * 
     * @param rs 查看结果集是滞关闭
     * @param stmt 预处理SQL是否关闭
     * @param conn 数据库连接是否关闭
     */
    private void close(ResultSet rs, Statement stmt, Connection conn) {

        try {
            if (rs != null) {
                rs.close();
            }
        } catch (SQLException e) {
            System.out.println(JdbcExample.class.getName() + "ResultSet 关闭失败!");
        }
        try {
            if (stmt != null) {
                stmt.close();
            }
        } catch (SQLException e) {
            System.out.println(JdbcExample.class.getName() + "Statement 关闭失败!");
        }
        try {
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            System.out.println(JdbcExample.class.getName() + "Connection 关闭失败!");
        }
    }



    public static void main(String[] args) {
        User user = new JdbcExample().getUser(1);//我们查询用户的id 为 1 用户 
        System.out.println(user);//打印输出查询出来的数据

    }

}

 

以上是关于传统JDBC操作数据库的主要内容,如果未能解决你的问题,请参考以下文章

部分代码片段

spring 14-Spring框架JDBC操作

传统jdbc存在的问题总结

传统JDBC的弊病和mybatis的解决方案

JDBCORMMybatis初识

JDBCORMMybatis初识