java和jdbc操作数据库MySQL

大家初学java连接数据库一定遇到不少问题吧,我遇到这些问题也很头痛,所以我我把我初学jdbc连接数据库写的代码直接分享给大家。最后有完整代码可以直接复制运行

建表语句

CREATE TABLE `course`  (
  `Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `Mark` int NULL DEFAULT NULL,
  `Id` bigint NULL DEFAULT NULL

我测试的是homework数据库下的表格course。这个可以在连接里面指定:

jdbc:mysql://localhost:3306/homework

管理数据库的软件我用的Navicat

连接数据库

//数据库连接工具类
class DBConnection {

    // 获取数据库连接
    public static Connection getConnection() {

        Connection con =null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");


            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/homework", "root", "password");
            if (con==null) {
                System.out.println("数据库连接失败");
            }



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

        return con;
    }


// 关闭数据库资源
    public static void close(ResultSet rs, PreparedStatement pstmt, Connection conn) throws Exception {
        try {
            if (rs !=null ){
                rs.close();
            }
            if (pstmt!=null ){
                pstmt.close();
            }
            if (conn !=null ){
                conn.close();
            }


        } catch (SQLException throwables) {

            throwables.printStackTrace();
        }
    }
}

dao模式实现增删改查


interface ICourseDao {
    public int insert(Course course) throws Exception;
    public int delete(long  i) throws Exception;
    public int update(Course course) throws Exception;
    //查询表中所有课程信息并以列表形式返回
    public List<Course> select() throws Exception;
    //实现课程信息的增加、修改和删除
    public int update(String sql, Object[] params) throws Exception;
}

//课程 DAO实现类,负责数据库访问操作的具体实现
class CourseDaoImpl implements ICourseDao {
    private static final String SQL_INSERT = "insert into course (name,mark,id) values(?,?,?)";
    private static final String SQL_DELETE = "delete from course where id=?";
    private static final String SQL_UPDATE = "update course set name=?,mark=? where id=?";

    public int insert(Course course) throws Exception {
        return update(SQL_INSERT, new Object[] {course.getName(),course.getMark(),course .getId()});
    }

    public int delete(long  i) throws Exception {
        return update(SQL_DELETE, new Object[] { i });
    }

    public int update(Course course) throws Exception {
        return update(SQL_UPDATE, new Object[] { course.getName(), course.getMark(), course.getId() });
    }
    //查询表中所有课程信息并以列表形式返回
    public List<Course> select() throws Exception {
        List<Course> courseList = new ArrayList<>() ;
        Course course =null ;

        //你的实现代码
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs=null ;



        conn =DBConnection .getConnection() ;
        pstmt = conn.prepareStatement("select * from course") ;

        rs=pstmt .executeQuery() ;

        while ( rs.next() ){

            String Name=rs.getString(1) ;
            int Mark=rs.getInt(2);
            long  Id=rs.getLong(3) ;

            course =new Course(Name ,Mark ,Id );
           courseList .add(course );
        }
        DBConnection .close(rs ,pstmt ,conn ) ;

        return  courseList;
    }
    //实现课程信息的增加、修改和删除
    public int update(String sql, Object[] params) throws Exception {

        Connection conn = null;
        PreparedStatement pstmt = null;

//      获取方法
        conn =DBConnection .getConnection() ;
//      准备预编译
        pstmt = conn.prepareStatement(sql) ;
//        处理参数
        for (int i =0;i <params .length ;i++){

            pstmt .setObject(i+1,params[i]) ;
        }
//      执行SQL语句
        int flag=pstmt.executeUpdate() ;
        DBConnection .close(pstmt ,conn);
        return flag ;
    }
}

实体对象类

class Course {
    //你的实现代码
    private String Name;
    private  int Mark;
    private  long  Id;

    public Course() {
    }

    public Course(String name, int mark, long id) {
        Name = name;
        Mark = mark;
        Id = id;
    }


    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public int getMark() {
        return Mark;
    }

    public void setMark(int mark) {
        Mark = mark;
    }

    public long  getId() {
        return Id;
    }

    public void setId(int id) {
        Id = id;
    }

    @Override
    public String toString() {
        return "Course{" +
                "Name='" + Name + '\'' +
                ", Mark=" + Mark +
                ", Id=" + Id +
                '}';
    }
}


测试代码

//分别测试课程信息的查询、增加啊、修改和删除功能
public class Main {
    public static void main(String[] args) {
        //你的实现代码
        System.out.println("---------------菜单--------------");
        System.out.println("1.插入,2.删除,3.更新,4.查询全部信息,5.退出");
        Scanner input=new Scanner(System .in ) ;
        int m=input .nextInt() ;
        CourseDaoImpl courseDao =new CourseDaoImpl() ;
        try {
        if(m==1){
            Course course =scanner_() ;
            System.out.println("已经插入"+courseDao.insert(course)+"条记录");
        }else if (m==2)
        {
            Course course =scanner_() ;
            System.out.println( "已经删除"+courseDao.delete(course.getId())+"条记录");

        }else if (m==3){
            Course course =scanner_() ;
            System.out.println("已经更新"+courseDao.update(course)+"条记录");

        }else if (m==4){
            System.out.println("以下为查询到的信息");
            List <Course > courseList =  courseDao .select() ;
            for (Course  c:courseList ){
               System.out.println(c);
           }

        }else if (m==5){
            System .exit(0);
        }
        main1(args ) ;//为了循环调用main方法

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


    }
    //为了循环调用main方法
    static void main1(String []args){
        main(args );

    }
      static Course scanner_(){
        System.out.println("请你输入内容");
        Scanner scanner =new Scanner(System .in ) ;
        System.out.println("姓名");
        String Name=scanner .next();
        System.out.println("分数");
        int Mark=scanner .nextInt() ;
        System.out.println("Id");
         long  Id=scanner.nextLong() ;
        Course course =new Course(Name ,Mark ,Id ) ;
        return course ;
    }


}

全部代码



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

//数据库连接工具类
class DBConnection {

    // 获取数据库连接
    public static Connection getConnection() {

        Connection con =null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");


            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/homework", "root", "password");
            if (con==null) {
                System.out.println("数据库连接失败");
            }



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

        return con;
    }
    // 关闭数据库资源
    public static void close(ResultSet rs, PreparedStatement pstmt, Connection conn) throws Exception {
        try {
            if (rs !=null ){
                rs.close();
            }
            if (pstmt!=null ){
                pstmt.close();
            }
            if (conn !=null ){
                conn.close();
            }


        } catch (SQLException throwables) {

            throwables.printStackTrace();
        }
    }
    // 关闭数据库资源
    public static void close(PreparedStatement pstmt, Connection conn) throws Exception {
        //你的实现代码
        try {

            if (pstmt!=null ){
                pstmt.close();
            }
            if (conn !=null ){
                conn.close();
            }


        } catch (SQLException throwables) {

            throwables.printStackTrace();
        }

    }

}


interface ICourseDao {
    public int insert(Course course) throws Exception;
    public int delete(long  i) throws Exception;
    public int update(Course course) throws Exception;
    //查询表中所有课程信息并以列表形式返回
    public List<Course> select() throws Exception;
    //实现课程信息的增加、修改和删除
    public int update(String sql, Object[] params) throws Exception;
}

//课程 DAO实现类,负责数据库访问操作的具体实现
class CourseDaoImpl implements ICourseDao {
    private static final String SQL_INSERT = "insert into course (name,mark,id) values(?,?,?)";
    private static final String SQL_DELETE = "delete from course where id=?";
    private static final String SQL_UPDATE = "update course set name=?,mark=? where id=?";

    public int insert(Course course) throws Exception {
        return update(SQL_INSERT, new Object[] {course.getName(),course.getMark(),course .getId()});
    }

    public int delete(long  i) throws Exception {
        return update(SQL_DELETE, new Object[] { i });
    }

    public int update(Course course) throws Exception {
        return update(SQL_UPDATE, new Object[] { course.getName(), course.getMark(), course.getId() });
    }
    //查询表中所有课程信息并以列表形式返回
    public List<Course> select() throws Exception {
        List<Course> courseList = new ArrayList<>() ;
        Course course =null ;

        //你的实现代码
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs=null ;



        conn =DBConnection .getConnection() ;
        pstmt = conn.prepareStatement("select * from course") ;

        rs=pstmt .executeQuery() ;

        while ( rs.next() ){

            String Name=rs.getString(1) ;
            int Mark=rs.getInt(2);
            long  Id=rs.getLong(3) ;

            course =new Course(Name ,Mark ,Id );
           courseList .add(course );
        }
        DBConnection .close(rs ,pstmt ,conn ) ;

        return  courseList;
    }
    //实现课程信息的增加、修改和删除
    public int update(String sql, Object[] params) throws Exception {

        Connection conn = null;
        PreparedStatement pstmt = null;

//      获取方法
        conn =DBConnection .getConnection() ;
//      准备预编译
        pstmt = conn.prepareStatement(sql) ;
//        处理参数
        for (int i =0;i <params .length ;i++){

            pstmt .setObject(i+1,params[i]) ;
        }
//      执行SQL语句
        int flag=pstmt.executeUpdate() ;
        DBConnection .close(pstmt ,conn);
        return flag ;
    }
}
//分别测试课程信息的查询、增加啊、修改和删除功能
public class Main {
    public static void main(String[] args) {
        //你的实现代码
        System.out.println("---------------菜单--------------");
        System.out.println("1.插入,2.删除,3.更新,4.查询全部信息,5.退出");
        Scanner input=new Scanner(System .in ) ;
        int m=input .nextInt() ;
        CourseDaoImpl courseDao =new CourseDaoImpl() ;
        try {
        if(m==1){
            Course course =scanner_() ;
            System.out.println("已经插入"+courseDao.insert(course)+"条记录");
        }else if (m==2)
        {
            Course course =scanner_() ;
            System.out.println( "已经删除"+courseDao.delete(course.getId())+"条记录");

        }else if (m==3){
            Course course =scanner_() ;
            System.out.println("已经更新"+courseDao.update(course)+"条记录");

        }else if (m==4){
            System.out.println("以下为查询到的信息");
            List <Course > courseList =  courseDao .select() ;
            for (Course  c:courseList ){
               System.out.println(c);
           }

        }else if (m==5){
            System .exit(0);
        }
        main1(args ) ;//为了循环调用main方法

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


    }
    //为了循环调用main方法
    static void main1(String []args){
        main(args );

    }
      static Course scanner_(){
        System.out.println("请你输入内容");
        Scanner scanner =new Scanner(System .in ) ;
        System.out.println("姓名");
        String Name=scanner .next();
        System.out.println("分数");
        int Mark=scanner .nextInt() ;
        System.out.println("Id");
         long  Id=scanner.nextLong() ;
        Course course =new Course(Name ,Mark ,Id ) ;
        return course ;
    }


}
class Course {
    //你的实现代码
    private String Name;
    private  int Mark;
    private  long  Id;

    public Course() {
    }

    public Course(String name, int mark, long id) {
        Name = name;
        Mark = mark;
        Id = id;
    }


    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public int getMark() {
        return Mark;
    }

    public void setMark(int mark) {
        Mark = mark;
    }

    public long  getId() {
        return Id;
    }

    public void setId(int id) {
        Id = id;
    }

    @Override
    public String toString() {
        return "Course{" +
                "Name='" + Name + '\'' +
                ", Mark=" + Mark +
                ", Id=" + Id +
                '}';
    }
}



  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值