学习记录01 --- 访问JDBC,制作教务管理系统

Posted huajidafahao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习记录01 --- 访问JDBC,制作教务管理系统相关的知识,希望对你有一定的参考价值。

首先说下我就一个菜鸡,只是记录下自己的学习过程,大佬们无视我就好。。。

---------------------------------------------------------------------------------------------------------

今天学习了JDBC,下午就做了一个经典的增删改查的案例,教务管理系统

自己也试着封装了一下,面向对象思想嘛

原来一直用的eclipse,直到今天接触到idea才知道啥叫真正的好用,但对于idea还是比较陌生,还得摸索一段时间。

这边就只记录我在进行数据库连接时产生的一些问题,其他的都太简单了,没有记录必要。

关于JDBC我单独写了一个类,先贴上我最开始写的一个版本

package org.lanqiao.jwgl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;


public class Jdbc 
    static String url = "jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf-8";
    static String user = "root";
    static String pwd = "123456";

    //连接数据库,并返回连接对象
    public static void connetcDatabase() throws Exception 
        //导入驱动类
        Class.forName("com.mysql.jdbc.Driver");
        //创建连接对象
        Connection  conn = DriverManager.getConnection(url,user,pwd);
        //返回连接对象
        return conn;
    

    //数据库查询操作
    public static ResultSet executeQueryDatabase(String sql) throws Exception 
        //调用连接数据库方法连接数据库
        Connection conn = connetcDatabase();
        //创建命令行
        Statement stt = conn.createStatement();
        //执行sql语句
        ResultSet result = stt.executeQuery(sql);
       
        //关闭数据库连接
        conn.close();
        stt.close();

        //返回操作结果
        return result;

 
    //数据库增删改操作 
    public static int executeUpdateDatabase(String sql) throws Exception 
         //调用连接数据库方法连接数据库 
        Connection conn = connetcDatabase(); 
        //创建命令行 
        Statement stt = conn.createStatement(); 
        //执行sql语句 
        int line = stt.executeUpdate(sql);
       //关闭数据库连接
        conn.close();
        stt.close();
        //返回影响行数 
        return line;
    


 

 这样写的话,增删改没啥问题,都能正常操作,但唯独查询的时候报异常了

Operation not allowed after ResultSet closed

后来百度查询了一番,发现是因为在result进行遍历操作之前就把数据库连接给关闭了

就下面这段代码

    //数据库查询操作
    public static ResultSet executeQueryDatabase(String sql) throws Exception 
        //调用连接数据库方法连接数据库
        Connection conn = connetcDatabase();
        //创建命令行
        Statement stt = conn.createStatement();
        //执行sql语句
        ResultSet result = stt.executeQuery(sql);
        

        //就是下面这段的锅,导致在返回操作结果进行遍历之前关闭了数据库连接
        conn.close();
        stt.close();

        //返回操作结果 
        return result;

 

 

 后来左思右想,我干脆把Connection和Statement对象都创建成全局的,然后单独写个关闭数据库的方法

    //关闭数据库连接
    public static void closeDatabase() throws Exception 
        //关闭数据库连接
        conn.close();
        stt.close();
    

 

 然后每次增删改查操作后都调用这个方法关闭数据库连接,这样就解决了

然后其它的问题倒是没出现,最后贴上没有任何问题的代码

package org.lanqiao.jwgl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;


public class Jdbc 
    static String url = "jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf-8";
    static String user = "root";
    static String pwd = "123456";

    //定义成全局变量方便关闭
    static Connection conn;
    static Statement stt;

    //连接数据库
    public static void connetcDatabase() throws Exception 
        //导入驱动类
        Class.forName("com.mysql.jdbc.Driver");
        //创建连接对象
        conn = DriverManager.getConnection(url,user,pwd);

    

    //数据库查询操作
    public static ResultSet executeQueryDatabase(String sql) throws Exception 
        //调用连接数据库方法连接数据库
        connetcDatabase();
        //创建命令行
        stt = conn.createStatement();
        //执行sql语句
        ResultSet result = stt.executeQuery(sql);
        //返回操作结果
        return result;
    

    //数据库增删改操作
    public static int executeUpdateDatabase(String sql) throws Exception 
        //调用连接数据库方法连接数据库
        connetcDatabase();
        //创建命令行
        stt = conn.createStatement();
        //执行sql语句
        int line = stt.executeUpdate(sql);
        //返回影响行数
        return line;
    

    //关闭数据库连接
    public static void closeDatabase() throws Exception 
        //关闭数据库连接
        conn.close();
        stt.close();
    


 最后提一下,idea导出jar包是真蛋疼,开始导出一个,运行报错误,jar包损坏

再查了许久的资料后,发现选择jar后不要选择那个Empty,而是选另外一个,但是也得和mysql架包放在一起才能运行

第一次用idea不太熟练,希望有大佬知道如何正确导出jar包,还望指出,万分感谢!!!

以上是关于学习记录01 --- 访问JDBC,制作教务管理系统的主要内容,如果未能解决你的问题,请参考以下文章

django制作一个小小的教务系统并且成功部署到腾讯云(实现:增删改查和选课的功能)

反向代理工大教务管理系统,外网也能用教务

JDBC-Mybatis-Hibernate

一《学生教务系统》之城市管理板块实现

金陵科技学院教务管理系统正方登录【官网入口】

福建师范大学教务处正方管理系统入口地址