Jdbc与mysql的使用

jdbc就是与数据进行访问的操作,这也是基本的与数据库访问操作,后面可能你们会接触到流行的jdbc框架,ORM框架(mybatis、hibernate等)。下面简单说一下原生jdbc

操作步骤:

  1. 下载驱动
  2. 加载驱动
  3. 获取连接数据库对象
  4. Sql预处理(防止sql注入)
  5. 替换sql中的?占位符
  6. 执行sql操作(查询、更新=增删改)

    6.1查询返回的是结果集对象,进行遍历封装成对象

    6.2更新返回的是更改数据条数

  7. 倒叙关闭资源

例如:

创建项目

Jdbc与mysql的使用_第1张图片

util放连接数据库的工具类

dao放与数据库访问操作

been放实体类

(1)下载驱动http://central.maven.org/maven2/mysql/mysql-connector-java/8.0.13/

Jdbc与mysql的使用_第2张图片

 

(2)创建DBUtil工具类

package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * 访问数据库的工具类
 */
public abstract class DBUtil {
    //驱动
    private static String driver ="com.mysql.cj.jdbc.Driver";
    //数据库url与数据库名 "jdbc:Mysql://(ip地址):(端口号)/(数据库名)"+
    //ip 本地127.0.0.1     mysql端口号3306
    private static String url="jdbc:mysql://(你的ip):3306/(你的数据库名)"+"?serverTimezone=GMT%2B8";
    //数据库用户名和密码
    private static String user="root";
    private static String password="root";

    private static Connection connection=null;


    static {
        //1.加载驱动
        try {
            Class.forName(driver);
            System.out.println("驱动连接成功!!!");
        } catch (ClassNotFoundException e) {
            System.out.println("驱动连接失败!!!");
            e.printStackTrace();
        }
    }

    /**
     * 获取连接数据库对象
     * @return
     */
    public  static Connection getConnection(){
        try {
            //2.获取连接数据库对象
            connection=  DriverManager.getConnection(url, user, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    /**
     * 关闭资源
     */
    public static void close(){
            try {
                if (connection!=null){
                connection.close();
                    System.out.println("数据库连接对象关闭成功!");
                }
            } catch (SQLException e) {
                System.out.println("数据库连接对象关闭异常!");
                e.printStackTrace();
            }finally {
                connection=null;
            }
    }


}

(3)创建DBTest类,测试驱动和数据库连接是否正常

package test;

import util.DBUtil;

import java.sql.Connection;

public class DBTest extends DBUtil{
    public static void main(String[] args) {
        Connection connection = getConnection();
        if (connection!=null){
            System.out.println("数据库连接成功!!!");
            close();
        }else {
            System.out.println("数据库连接失败!!!");
        }
    }
}

(4)创建实体been类

package been;

public class Tbl_User {
    private String username;
    private String userpass;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUserpass() {
        return userpass;
    }

    public void setUserpass(String userpass) {
        this.userpass = userpass;
    }
    @Override
    public String toString() {
        return "Tbl_User{" +
                "username='" + username + '\'' +
                ", userpass='" + userpass + '\'' +
                '}';
    }
}

(5)创建UserDao类,实现查询和添加功能

package dao;

import been.Tbl_User;
import util.DBUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class UserDao extends DBUtil {

    /**
     * 查询
     * @return
     */
    public List getUsers(){
        //获取连接数据库对象
        Connection connection = getConnection();
        PreparedStatement preparedStatement;
        ResultSet resultSet;
        List tbl_users = null;
        String sql = "select * from tbluser";
        try {
            //sql预处理
            preparedStatement = connection.prepareStatement(sql);
            //执行查询操作,返回结果集
             resultSet = preparedStatement.executeQuery();
            //创建一个集合对象,收集查询出来的结果
            tbl_users = new ArrayList();
            while (resultSet.next()){//游标遍历
                //获取对字段
                String username = resultSet.getString("username");
                String userpass = resultSet.getString("userpass");
                //创建对象添加属性
                Tbl_User tbl_user = new Tbl_User();
                tbl_user.setUsername(username);
                tbl_user.setUserpass(userpass);
                //将创建的对象添加的集合对象中
                tbl_users.add(tbl_user);
            }

            //倒叙关闭资源
            resultSet.close();
            preparedStatement.close();
            close();

        } catch (SQLException e) {
            e.printStackTrace();
        }
        return tbl_users;
    }



    public int addUser(Tbl_User tblUser){
        //获取连接数据库对象
        Connection connection = getConnection();
        PreparedStatement preparedStatement;
        ResultSet resultSet;
        int n = 0;
        String sql="INSERT INTO tbluser VALUES (?,?)";

        try {
            //sql预处理
            preparedStatement = connection.prepareStatement(sql);
            //替换sql中的?占位符
            preparedStatement.setString(1,tblUser.getUsername());
            preparedStatement.setString(2,tblUser.getUserpass());
            //执行更新操作
            n = preparedStatement.executeUpdate();
            //倒叙关闭资源
            preparedStatement.close();
            close();

        } catch (SQLException e) {
            e.printStackTrace();
        }
        return n;
    }

}

(6)创建TestUserDao测试类

package test;

import been.Tbl_User;
import dao.UserDao;

import java.util.List;

public class TestUserDao {
    public static void main(String[] args) {
        UserDao userDao = new UserDao();
        List users = userDao.getUsers();
        for (Tbl_User user : users) {
            System.out.println(user);
        }
    }

//    public static void main(String[] args) {
//        UserDao userDao = new UserDao();
//        Tbl_User tbl_user = new Tbl_User();
//        tbl_user.setUserpass("test");
//        tbl_user.setUsername("test");
//        int i = userDao.addUser(tbl_user);
//        if (i>0){
//            System.out.println("添加成功!!!");
//        }else {
//            System.out.println("添加异常!!!");
//        }
//    }
}

总结:这里涉及一些抽象类、继承、static关键词,知识后续我也会总结分享。

你可能感兴趣的:(Jdbc与mysql的使用)