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分库分表与分区的入门指南
Apr 22 MySQL
MySQL数字类型自增的坑
May 07 MySQL
MySQL 数据恢复的多种方法汇总
Jun 21 MySQL
MySQL 服务和数据库管理
Nov 11 MySQL
mysql sum(if())和count(if())的用法说明
Jan 18 MySQL
MySQL慢查询优化解决问题
Mar 17 MySQL
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
Mar 23 MySQL
MySQL的存储函数与存储过程的区别解析
Apr 08 MySQL
mysql 子查询的使用
Apr 28 MySQL
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 MySQL
MySql中的json_extract函数处理json字段详情
Jun 05 MySQL
浅谈MySql update会锁定哪些范围的数据
Jun 25 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代码
2008/04/09 PHP
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
CI框架的安全性分析
2016/05/18 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
JavaScript 的方法重载效果
2009/08/07 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
JS module的导出和导入的实现代码
2019/02/25 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
解决python3.x安装numpy成功但import出错的问题
2020/11/17 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
html5构建触屏网站之touch事件介绍
2013/01/07 HTML / CSS
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
如何用canvas实现在线签名的示例代码
2018/07/10 HTML / CSS
大学生自我鉴定范文模板
2014/01/21 职场文书
京剧自荐信
2014/01/26 职场文书
教育合作协议范本
2014/10/17 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
计划生育目标责任书
2015/05/09 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
优质护理服务心得体会
2016/01/22 职场文书