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 CHAR和VARCHAR该如何选择
May 31 MySQL
Mysql文件存储图文详解
Jun 01 MySQL
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
Jun 21 MySQL
MySQL 聚合函数排序
Jul 16 MySQL
mysql脏页是什么
Jul 26 MySQL
彻底解决MySQL使用中文乱码的方法
Jan 22 MySQL
Arthas排查Kubernetes中应用频繁挂掉重启异常
Feb 28 MySQL
关于MySQL临时表为什么可以重名的问题
Mar 22 MySQL
Nebula Graph解决风控业务实践
Mar 31 MySQL
mysql查询结果实现多列拼接查询
Apr 03 MySQL
mysql数据库实现设置字段长度
Jun 10 MySQL
postgresql如何找到表中重复数据的行并删除
May 08 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读取xml实例代码
2010/01/28 PHP
php和javascript之间变量的传递实现代码
2012/12/19 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
php如何计算两坐标点之间的距离
2018/12/29 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
不同浏览器的怪癖小结
2010/07/11 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
探究react-native 源码的图片缓存问题
2017/08/24 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
vue.js 实现点击按钮动态添加li的方法
2018/09/07 Javascript
对angular 监控数据模型变化的事件方法$watch详解
2018/10/09 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
python SQLAlchemy的Mapping与Declarative详解
2019/07/04 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
电子商务专业个人的自我评价
2013/12/19 职场文书
法学专业自我鉴定
2014/02/05 职场文书
学校交通安全责任书
2014/08/25 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB