JDBC连接的六步实例代码(与mysql连接)


Posted in MySQL onMay 12, 2021

JDBC的六步:

1.注册驱动

2.获取数据库的连接

3.获取数据库的操作对象

4.执行sql语句

5.处理查询结果集(如果执行的语句中没有select语句这一步不用写)

6.关闭资源

第一步:注册驱动

//异常一定是需要处理的
//根据版本不同书写的代码有一些变化,老版本是
DriverManager.register(new com.mysql.jdbc.Driver());
//或者
Class.forName("com.mysql.jdbc.Driver");
 
 
//新版本是
DriverManager.register(new com.mysql.cj.jdbc.Driver());
//或者
Class.forName("com.mysql.cj.jdbc.Driver");

第二步:获取数据库的连接

//因为要进行try..catch,还要关闭这个资源,因此写在try外边且赋值为空
Connection conn = null;
...
//返回值是Connection,老版本和新版的url书写也不一样
// jdbc:mysql://localhost:3306/t_use这个前面的都一样,把t_use更改为自己的数据库名
//老版
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/t_use","用户名","密码");
 
 
//新版
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/t_use?serverTimezone=GMT%2B8","用户名","密码");

第三步:获取数据库操作对象

//这个和刚才的Connection是一样的
Statement st = null;
...
//这样就把对象创建好了
st = conn.createStatement();

第四步:执行sql语句

//引号里面写sql语句
String sql = " ";
//再用刚才创建好的对象接入这个sql语句
//这里还有需要说的,如果不是select语句就用下面这个,返回值是一个int,这个就不需要第五步了
st.executeUpdate(sql);
 
//如果sql语句是select的话,就要用下面的这个语句了,还需要定义一个ResultSet对象,去接收这个值
//然后进行第五步的处理
ResultSet rs = null; //和Connection一样的
rs = st.executeQuery(sql);

第五步:处理查询结果集

//这个只有select语句才进行处理,不仅可以getString还可以getInt等
while(rs.next()){
    String str = rs.getString("需要输出的字段的名字");
}

第六步:关闭资源

//前面五步都是在try里面进行的,第六步是在finally进行的
//关闭连接
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
 
            if (st != null) {
                try {
                    st.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
 
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }

关闭连接也是有顺序的,先关ResultSet,再关Statement对象,最后关Connection对象.

完整代码

package jdbc.com;
import com.mysql.cj.protocol.Resultset;
 
import java.sql.*;
public class Test02 {
    public static void main(String[] args) {
 
        Connection conn = null;
        Statement st = null;
        ResultSet rt = null;
        try {
            //注册连接(可以写到一行里面)
            //com.mysql.cj.jdbc.Driver Driver = new com.mysql.cj.jdbc.Driver();
            DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
            //获取数据库连接
            conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/liu2?serverTimezone=GMT%2B8","用户名","密码");
            //获取数据库操作对象
            st = conn.createStatement();
            //执行sql语句
            String sql = "select ename,sal from emp order by sal desc";
            rt = st.executeQuery(sql);
            //处理查询语句
           while(rt.next()){
               String ename = rt.getString("ename");
               String sal = rt.getString("sal");
               System.out.println(ename + "," + sal);
           }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            //关闭连接
            if (rt != null) {
                try {
                    rt.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
 
            if (st != null) {
                try {
                    st.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
 
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
 
 
        }
    }
}

最后,这个如果要传入值的话,可能会造成sql的注入,解决办法就是把Statement变成PreparedStatement,就可以避免sql的注入问题了,只不过第三步和第四步代码有点变化,就不再多说了。。

总结

到此这篇关于JDBC连接(与mysql连接)的文章就介绍到这了,更多相关JDBC与mysql连接内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL之DML语言
Apr 05 MySQL
Mysql数据库索引面试题(程序员基础技能)
May 31 MySQL
MySQL 数据恢复的多种方法汇总
Jun 21 MySQL
MySQL如何使用使用Xtrabackup进行备份和恢复
Jun 21 MySQL
详细聊聊MySQL中慢SQL优化的方向
Aug 30 MySQL
如何避免mysql启动时错误及sock文件作用分析
Jan 22 MySQL
MySQL的索引你了解吗
Mar 13 MySQL
Mysql多层子查询示例代码(收藏夹案例)
Mar 31 MySQL
mysql使用 not int 子查询隐含陷阱
Apr 12 MySQL
MySQL 执行数据库更新update操作的时候数据库卡死了
May 02 MySQL
手把手带你彻底卸载MySQL数据库
Jun 14 MySQL
MySQL索引知识的一些小妙招总结
MySQL COUNT函数的使用与优化
May 10 #MySQL
解读MySQL的客户端和服务端协议
MySQL 重写查询语句的三种策略
May 10 #MySQL
详解MySQL 联合查询优化机制
mysql对于模糊查询like的一些汇总
May 09 #MySQL
MySQL Threads_running飙升与慢查询的相关问题解决
You might like
PHP加密解密类实例代码
2016/07/20 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
javascript中打印当前的时间实现思路及代码
2013/12/18 Javascript
js 鼠标移动显示图片的简单实例
2013/12/25 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
vue组件学习教程
2017/09/09 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
python中pygame模块用法实例
2014/10/09 Python
Python读大数据txt
2016/03/28 Python
浅谈python中的占位符
2017/11/09 Python
一行Python代码过滤标点符号等特殊字符
2019/08/12 Python
Django使用中间件解决前后端同源策略问题
2019/09/02 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
2020/03/24 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
2021/02/22 Python
详解css3中 text-fill-color属性
2019/07/08 HTML / CSS
银行实习生自我鉴定范文
2013/09/19 职场文书
股权转让协议书
2014/04/12 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
行政专员岗位职责说明书
2014/07/30 职场文书
领导班子党的群众路线对照检查材料
2014/09/25 职场文书
导游词范文
2015/02/13 职场文书
公司宣传语大全
2015/07/13 职场文书
送给教师们,到底该如何写好教学反思?
2019/07/02 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP