java利用JDBC操作数据库

java用JDBC对数据库进行:‘增删改查’

首先创建创建数据库连接

这里我用的这是地址池自动连接

这里面是连接数据库的jar包,地址池的jar包
链接:https://pan.baidu.com/s/1Pd6mOl63oTvmMTFm4uMmhg 
提取码:4thw

第一个要创建一个属性文件夹,用料解决硬编码问题,以我的数据库为例

	db.properties文件夹:
	driverClassName=com.mysql.jdbc.Driver
	url=jdbc:mysql://127.0.0.1:3306/jdbc
	username=root
	password=123456

创建一个user类

package domain;

public class User {
    private String name;
    private int age;
    private int id;

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", id=" + id +
                '}';
    }

    public User(String name, int age, int id) {
        this.name = name;
        this.age = age;
        this.id = id;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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;
    }

}

创建一个数据库增删改查的方法接口`

import domain.User;

import java.util.List;

public interface IUserdao {
//
    public void save(User user);

    public void update(User user);


    public void delete (int id);

    public User findOne(int id);

    public List<User> findAll();
    
}

创建一个实现类

package dao.impl;

import dao.IUserdao;
import domain.User;
import utils.JDBCutils;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class UserImpl implements IUserdao {
    private PreparedStatement statement=null;
    public Connection conn=null;
    public ResultSet resultSet=null;
    //添加
    @Override
    public void save(User user) {
         conn = JDBCutils.instance.start();
        String sql="insert into user (name,age) values(?,?)";
        try {
            statement =conn.prepareStatement(sql);
            statement.setString(1,user.getName());
            statement.setInt(2,user.getAge());
            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        JDBCutils.instance.close(conn,statement,null);
    }
//修改
    @Override
    public void update(User user) {
        conn = JDBCutils.instance.start();
        String sql="update user set name=?,age=? where id="+user.getId();
        try {
            statement =conn.prepareStatement(sql);
            statement.setString(1,user.getName());
            statement.setInt(2,user.getAge());
            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        JDBCutils.instance.close(conn,statement,null);
    }

//删除
    @Override
    public void delete(int id) {
        conn = JDBCutils.instance.start();
        String sql="delete  from user where id="+id;
        try {
            statement =conn.prepareStatement(sql);
            statement.execute();

        } catch (SQLException e) {
            e.printStackTrace();
        }
        JDBCutils.instance.close(conn,statement,null);
    }
    //查询单个
    public User findOne(int id){
        User user = new User();
        conn = JDBCutils.instance.start();
        String sql="select * from user where id="+id;
        try {
            statement =conn.prepareStatement(sql);

            statement.execute();

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

        try {
            resultSet = statement.getResultSet();
            while (resultSet.next()){
                user.setId(resultSet.getInt("id"));
                user.setName(resultSet.getString("name"));
                user.setAge(resultSet.getInt("age"));

            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        JDBCutils.instance.close(conn,statement,resultSet);
    return  user;
    }
//查询所有
    @Override
    public List<User> findAll() {

        List<User> users = new ArrayList<>();
        conn = JDBCutils.instance.start();
        String sql="select * from user ";
        try {
            statement =conn.prepareStatement(sql);

            statement.execute();

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

        try {
            resultSet = statement.getResultSet();
            while (resultSet.next()){
                User user = new User();
                user.setId(resultSet.getInt("id"));
                user.setName(resultSet.getString("name"));
                user.setAge(resultSet.getInt("age"));
                users.add(user);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        JDBCutils.instance.close(conn,statement,resultSet);
        return  users;
    }

}

最后我们在创建一个Test类

package test.dao.impl; 

import dao.impl.UserImpl;
import domain.User;
import org.junit.Test;
import org.junit.Before; 
import org.junit.After;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.List;

public class UserImplTest {
    UserImpl dao = new UserImpl();
@Test
public void testSave() throws Exception {
    User user1 = new User("钢铁侠", 19);
    dao.save(user1);
} 

@Test
public void testUpdate() throws Exception {
    User user1 = new User("超人", 19,4);
    dao.update(user1);
} 

@Test
public void testDelete() throws Exception { 
    dao.delete(5);
} 

@Test
public void testFindOne() throws Exception { 

    System.out.println( dao.findOne(1));
} 

@Test
public void testFindAll() throws Exception {
    List<User> all = dao.findAll();
    for (User u:all
         ) {
        System.out.println(u);
    }
}
} 

创建一个工具类

package utils;

import com.sun.org.apache.xerces.internal.util.PropertyState;
import org.apache.commons.dbcp.BasicDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

public enum JDBCutils {
    instance;
    private static Properties properties;
    private  static DataSource ds;
    static {
        properties=new Properties();
        try {
            //获取当前线程类构造器
            properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
            //利用地址池;连接到数据库
            ds= new BasicDataSourceFactory().createDataSource(properties);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    //创建数据库的连接
    public Connection start(){

        try {
            return DriverManager.getConnection(properties.getProperty("url"),properties.getProperty("username"),properties.getProperty("password"));
        } catch (SQLException e) {
            e.printStackTrace();
        }
    return null;

    }
    //关流
    public void close(Connection conn, PreparedStatement statement,ResultSet resultSet){
        if (conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (statement!=null) {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(resultSet!=null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

这样我们就可以操作数据库了。

发布了17 篇原创文章 · 获赞 1 · 访问量 182

猜你喜欢

转载自blog.csdn.net/weixin_43404554/article/details/105012467