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 05 MySQL
多表查询、事务、DCL
Apr 05 MySQL
mysql升级到5.7时,wordpress导数据报错1067的问题
May 27 MySQL
mysql 带多个条件的查询方式
Jun 05 MySQL
MySQL外键约束(FOREIGN KEY)案例讲解
Aug 23 MySQL
MySQL8.0升级的踩坑历险记
Nov 01 MySQL
MySQL sql模式设置引起的问题
May 15 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 14 MySQL
MySQL transaction事务安全示例讲解
Jun 21 MySQL
MySQL提升大量数据查询效率的优化神器
Jul 07 MySQL
MySQL自定义函数及触发器
Aug 05 MySQL
MySQL 原理与优化之Limit 查询优化
Aug 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
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
php中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
2016/05/21 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
JS路由跳转的简单实现代码
2017/09/21 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
微信小程序实现动态列表项的顺序加载动画
2019/07/25 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
python连接池实现示例程序
2013/11/26 Python
Python里disconnect UDP套接字的方法
2015/04/23 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
Python3实现统计单词表中每个字母出现频率的方法示例
2019/01/28 Python
浅谈python3中input输入的使用
2019/08/02 Python
解析python的局部变量和全局变量
2019/08/15 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
学雷锋月活动总结
2014/04/25 职场文书
微信小程序和php的登录实现
2021/04/01 PHP
Python爬虫之爬取某文库文档数据
2021/04/21 Python
Go语言实现一个简单的并发聊天室的项目实战
2022/03/18 Golang