`

【转】Java版DBHelper【简单】(MySQL数据库)

 
阅读更多

1、测试数据库

1.1 数据库数据

  

1.2 数据库结构

  

1.3 数据库脚本

DROP TABLE IF EXISTS `school`.`student`;

 

CREATE TABLE `school`.`student` (

`id` int(11) NOT NULL default '0',

`name` varchar(20) default NULL,

`sex` varchar(10) default NULL,

`age` int(10) default NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

INSERT INTO `student` VALUES ('201201', '张三', '男', '21');

INSERT INTO `student` VALUES ('201202', '李四', '男', '22');

INSERT INTO `student` VALUES ('201203', '王五', '女', '20');

INSERT INTO `student` VALUES ('201204', '赵六', '男', '21');

INSERT INTO `student` VALUES ('201205', '小红', '女', '19');

INSERT INTO `student` VALUES ('201206', '小明', '男', '22');

2、DBHelper用法

2.1 增加【Add】

    【示例代码

 

package com.hebut.util;

 

public class DBHelperApp {

 

    /**

     * 增加【 Add

     */

    public static void main(String[] args) {

        // 第一种情况

        String sql1="Insert Into student Values ('201208', ' 张三 ', ' ', '21')";

        System.out .println(DBHelper.executeNonQuery (sql1));

       

        // 第二种情况

        String sql2="Insert Into student Values (?,?,?,?)";

        Object[] obj = new Object[]{"201209"," 张三 ", " ", "21"};

        System.out .println(DBHelper.executeNonQuery (sql2,obj));

    }

}

 

    【运行结果

    1)控制台

 

1

1

 

2)数据库

  

2.2 删除【Del】

    【示例代码

 

package com.hebut.util;

 

public class DBHelperApp {

 

    /**

     * 删除【 Del

     */

    public static void main(String[] args) {

        // 第一种情况

        String sql1="Delete From student Where id='201202'";

        System.out .println(DBHelper.executeNonQuery (sql1));

       

        // 第二种情况

        String sql2="Delete From student Where id=? And name=?";

        Object[] obj = new Object[]{"201208"," 张三 "};

        System.out .println(DBHelper.executeNonQuery (sql2,obj));

    }

 

}

 

    【运行结果

    1)控制台

 

1

1

 

    2)数据库

  

    从图中可以看出id为"201202 "和"201208 "已经删除。

2.3 修改【Update】

    【示例代码

 

package com.hebut.util;

 

public class DBHelperApp {

 

    /**

     * 修改【 Update

     */

    public static void main(String[] args) {

        // 第一种情况

        String sql1="Update student Set age='27' Where id='201207'";

        System.out .println(DBHelper.executeNonQuery (sql1));

       

        // 第二种情况

        String sql2="Update student Set name=? Where id=?";

        Object[] obj = new Object[]{" 张二 ","201201"};

        System.out .println(DBHelper.executeNonQuery (sql2,obj));

    }

}

 

    【运行结果

    1)控制台

 

1

1

 

    2)数据库

  

  备注 :后面的操作都以上面数据为基准。

2.4 查询【Query】

    【示例代码

 

package com.hebut.util;

 

import java.sql.ResultSet;

import java.sql.SQLException;

 

public class DBHelperApp {

 

    /**

     * 查询【 Query

     * @throws SQLException

     */

    public static void main(String[] args) throws SQLException {

        // 第一种情况

        String sql1="Select * From student";

        // 第一步:查询

        ResultSet rs1 = DBHelper.executeQuery (sql1);

        // 二步:输出

        while (rs1.next()){

            System.out .println(" 姓名: "+rs1.getString(2));

        }

        // 第三步:关闭

        DBHelper.free (rs1);

       

        // 第二种情况

        String sql2="Select * From student Where name=?";

        Object[] obj = new Object[]{" 张三 "};

        // 第一步:查询

        ResultSet rs2 = DBHelper.executeQuery (sql2,obj);

        // 第二步:输出

        while (rs2.next()){

            System.out .println(" 学号: "+rs2.getString(1));

        }

        // 第三步:关闭

        DBHelper.free (rs2);

    }

}

 

    【运行结果

 

姓名:张二

姓名:王五

姓名:赵六

姓名:小红

姓名:小明

姓名:张三

姓名:张三

学号: 201207

学号: 201209

 

2.5 获取查询行数

    【示例代码

 

package com.hebut.util;

 

public class DBHelperApp {

 

    /**

     * 获取查询行数

     */

    public static void main(String[] args) {

        // 第一种情况

        String sql1="Select * From student";

        System.out .println(DBHelper.getCount (sql1));

       

        // 第二种情况

        String sql2="Select * From student Where name=?";

        Object[] obj = new Object[]{" 张三 "};

        System.out .println(DBHelper.getCount (sql2,obj));

    }

}

 

    【运行结果

 

7

2

 

2.6 判断记录存在

    【示例代码

 

package com.hebut.util;

 

public class DBHelperApp {

 

    /**

     * 判断记录存在

     */

    public static void main(String[] args) {

        // 第一种情况

        String sql1="Select * From student";

        System.out .println(DBHelper.isExist (sql1));

       

        // 第二种情况

        String sql2="Select * From student Where name=?";

        Object[] obj = new Object[]{" 张五 "};

        System.out .println(DBHelper.isExist (sql2,obj));

    }

}

 

    【运行结果

 

true

false

 

3、DBHelper代码

 

package com.hebut.util;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet ;

import java.sql.SQLException;

import java.sql.Statement;

 

public final class DBHelper {

 

    // 此方法为获取数据库连接

    public static Connection getConnection() {

        Connection conn = null ;

 

        try {

            String driver = "com.mysql.jdbc.Driver"; // 数据库驱动

            String url = "jdbc:MySQL://127.0.0.1:3306/school";// 数据库

            String user = "root"; // 用户名

            String password = "hadoop"; // 密码

            Class.forName (driver); // 加载数据库驱动

            if (null == conn) {

                conn = DriverManager.getConnection (url, user, password);

            }

        } catch (ClassNotFoundException e) {

            System.out .println("Sorry,can't find the Driver!");

            e.printStackTrace();

        } catch (SQLException e) {

            e.printStackTrace();

        } catch (Exception e) {

            e.printStackTrace();

        }

        return conn;

    }

 

    /**

     * 增删改【 Add Del Update

     *

     * @param sql

     * @return int

     */

    public static int executeNonQuery(String sql) {

        int result = 0;

        Connection conn = null ;

        Statement stmt = null ;

 

        try {

            conn = getConnection ();

            stmt = conn.createStatement();

            result = stmt.executeUpdate(sql);

        } catch (SQLException err) {

            err.printStackTrace();

            free (null , stmt, conn);

        } finally {

            free (null , stmt, conn);

        }

 

        return result;

    }

 

    /**

     * 增删改【 Add Delete Update

     *

     * @param sql

     * @param obj

     * @return int

     */

    public static int executeNonQuery(String sql, Object... obj) {

        int result = 0;

        Connection conn = null ;

        PreparedStatement pstmt = null ;

 

        try {

            conn = getConnection ();

            pstmt = conn.prepareStatement(sql);

 

            for (int i = 0; i < obj.length; i++) {

                pstmt.setObject(i + 1, obj[i]);

            }

 

            result = pstmt.executeUpdate();

        } catch (SQLException err) {

            err.printStackTrace();

            free (null , pstmt, conn);

        } finally {

            free (null , pstmt, conn);

        }

        return result;

    }

 

    /**

     * 查【 Query

     *

     * @param sql

     * @return ResultSet

     */

    public static ResultSet executeQuery(String sql) {

        Connection conn = null ;

        Statement stmt = null ;

        ResultSet rs = null ;

 

        try {

            conn = getConnection ();

            stmt = conn.createStatement();

            rs = stmt.executeQuery(sql);

        } catch (SQLException err) {

            err.printStackTrace();

            free (rs, stmt, conn);

        }

 

        return rs;

    }

 

    /**

     * 查【 Query

     *

     * @param sql

     * @param obj

     * @return ResultSet

     */

    public static ResultSet executeQuery(String sql, Object... obj) {

        Connection conn = null ;

        PreparedStatement pstmt = null ;

        ResultSet rs = null ;

 

        try {

            conn = getConnection ();

            pstmt = conn.prepareStatement(sql);

           

            for (int i = 0; i < obj.length; i++) {

                pstmt.setObject(i + 1, obj[i]);

            }

           

            rs = pstmt.executeQuery();

        } catch (SQLException err) {

            err.printStackTrace();

            free (rs, pstmt, conn);

        }

 

        return rs;

    }

 

    /**

     * 判断记录是否存在

     *

     * @param sql

     * @return Boolean

     */

    public static Boolean isExist(String sql) {

        ResultSet rs = null ;

 

        try {

            rs = executeQuery (sql);

            rs.last();

            int count = rs.getRow();

            if (count > 0) {

                return true ;

            } else {

                return false ;

            }

        } catch (SQLException err) {

            err.printStackTrace();

            free (rs);

            return false ;

        } finally {

            free (rs);

        }

    }

 

    /**

     * 判断记录是否存在

     *

     * @param sql

     * @return Boolean

     */

    public static Boolean isExist(String sql, Object... obj) {

        ResultSet rs = null ;

 

        try {

            rs = executeQuery (sql, obj);

            rs.last();

            int count = rs.getRow();

            if (count > 0) {

                return true ;

            } else {

                return false ;

            }

        } catch (SQLException err) {

            err.printStackTrace();

            free (rs);

            return false ;

        } finally {

            free (rs);

        }

    }

 

    /**

     * 获取查询记录的总行数

     *

     * @param sql

     * @return int

     */

    public static int getCount(String sql) {

        int result = 0;

        ResultSet rs = null ;

 

        try {

            rs = executeQuery (sql);

            rs.last();

            result = rs.getRow();

        } catch (SQLException err) {

            free (rs);

            err.printStackTrace();

        } finally {

            free (rs);

        }

 

        return result;

    }

 

    /**

     * 获取查询记录的总行数

     *

     * @param sql

     * @param obj

     * @return int

     */

    public static int getCount(String sql, Object... obj) {

        int result = 0;

        ResultSet rs = null ;

 

        try {

            rs = executeQuery (sql, obj);

            rs.last();

            result = rs.getRow();

        } catch (SQLException err) {

            err.printStackTrace();

        } finally {

            free (rs);

        }

 

        return result;

    }

 

    /**

     * 释放【 ResultSet 】资源

     *

     * @param rs

     */

    public static void free(ResultSet rs) {

        try {

            if (rs != null ) {

                rs.close();

            }

        } catch (SQLException err) {

            err.printStackTrace();

        }

    }

 

    /**

     * 释放【 Statement 】资源

     *

     * @param st

     */

    public static void free(Statement st) {

        try {

            if (st != null ) {

                st.close();

            }

        } catch (SQLException err) {

            err.printStackTrace();

        }

    }

 

    /**

     * 释放【 Connection 】资源

     *

     * @param conn

     */

    public static void free(Connection conn) {

        try {

            if (conn != null ) {

                conn.close();

            }

        } catch (SQLException err) {

            err.printStackTrace();

        }

    }

 

    /**

     * 释放所有数据资源

     *

     * @param rs

     * @param st

     * @param conn

     */

    public static void free(ResultSet rs, Statement st, Connection conn) {

        free (rs);

        free (st);

        free (conn);

    }

}

分享到:
评论

相关推荐

    YOLO算法-城市电杆数据集-496张图像带标签-电杆.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    (177406840)JAVA图书管理系统毕业设计(源代码+论文).rar

    JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代

    (35734838)信号与系统实验一实验报告

    内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    YOLO算法-椅子检测故障数据集-300张图像带标签.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    基于小程序的新冠抗原自测平台小程序源代码(java+小程序+mysql+LW).zip

    系统可以提供信息显示和相应服务,其管理新冠抗原自测平台小程序信息,查看新冠抗原自测平台小程序信息,管理新冠抗原自测平台小程序。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7 小程序开发工具:hbuildx/微信开发者工具

    YOLO算法-俯视视角草原绵羊检测数据集-4133张图像带标签-羊.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    (171674830)PYQT5+openCV项目实战:微循环仪图片、视频记录和人工对比软件源码

    内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    新建 文本文档.docx

    新建 文本文档.docx

    hw06.zip

    hw06

    3. Kafka入门-安装与基本命令

    3. Kafka入门-安装与基本命令

    燃气管道施工资质和特种设备安装改造维修委托函.docx

    燃气管道施工资质和特种设备安装改造维修委托函.docx

    The state of AI 2024.pdf

    AI大模型研究相关报告

    lab02.zip

    lab02

    Unity视频插件AVPro的Win端2.2.3

    仅供学习使用,其他用途请购买正版资源AVPro Video Core Windows Edition 2.2.3 亲测可用的视频播放插件,能丝滑播放透明视频等.

    建设工程消防验收现场指导意见表.docx

    建设工程消防验收现场指导意见表.docx

    MVIMG_20241222_194113.jpg

    MVIMG_20241222_194113.jpg

    五相电机双闭环矢量控制模型-采用邻近四矢量SVPWM-MATLAB-Simulink仿真模型包括: (1)原理说明文档(重要):包括扇区判断、矢量作用时间计算、矢量作用顺序及切时间计算、PWM波的生成

    五相电机双闭环矢量控制模型_采用邻近四矢量SVPWM_MATLAB_Simulink仿真模型包括: (1)原理说明文档(重要):包括扇区判断、矢量作用时间计算、矢量作用顺序及切时间计算、PWM波的生成; (2)输出部分仿真波形及仿真说明文档; (3)完整版仿真模型:包括邻近四矢量SVPWM模型和完整双闭环矢量控制Simulink模型; 资料介绍过程十分详细,零基础手把手教学,资料已经写的很清楚

    YOLO算法-锡罐-牙罐-盖子打开数据集-179张图像带标签-锡罐-牙罐-盖子打开.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    java毕设项目之ssm基于JSP的乡镇自来水收费系统+jsp(完整前后端+说明文档+mysql+lw).zip

    项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

Global site tag (gtag.js) - Google Analytics