前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java——JDBC

Java——JDBC

作者头像
羊羽shine
发布2019-05-29 18:30:56
4940
发布2019-05-29 18:30:56
举报
文章被收录于专栏:Golang开发Golang开发Golang开发
JDBC概述

Java DataBase Connectivity(java 数据库连接)

JDBC

• 加载数据库驱动 • 建立连接 • 创建用于向数据库发送SQL的Statement对象 • 从代表结果集的ResultSet中取出数据 • 断开与数据库的连接,并释放相关资源 pom配置文件

 <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.6</version>
        </dependency>
    </dependencies>

创建数据表user

CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `gender` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
);

INSERT INTO `user` VALUES (1, 'xiaowang', 1);
INSERT INTO `user` VALUES (2, 'xiaoming', 2);

步骤 1 注册驱动/加载驱动DriverManager.registerDriver 2 获取连接 DriverManager.getConnection 3 获取操作数据库的预处理对象prepareStatement 4 执行结果SQL 得到结果集executeQuery() 5 遍历结果集next() 6 释放资源close

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet ret = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://192.168.1.112:3306/test?useSSL=false", "root", "baxiang");
            stmt = conn.createStatement();
            ret = stmt.executeQuery("SELECT id,name FROM user ");
            while (ret.next()) {
                int uId = ret.getInt("id");
                String name = ret.getString("name");
                System.out.printf("%d:%s\n", uId, name);
            }

        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            if (ret != null) {
                try {
                    ret.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                ret = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                conn = null;
            }

        }
    }

如果使用的是5的mysl版本的话 com.mysql.jdbc.Driver 而6的版本是com.mysql.cj.jdbc.Driver

DriverManager.registerDriver(new com.mysql.jdbc.Driver());
API

一、注册驱动 实际开发中注册驱动会使用如下的方式: Class.forName("com.mysql.jdbc.Driver"); 因为之前的方式会导致驱动注册两次。 二、获得连接 Connection getConnection(String url,String username,String password); url 写法:jdbc:mysql://localhost:3306/jdbc jdbc :协议 mysql :子协议 localhost :主机名 3306 :端口号 url 简写:jdbc:mysql:///jdbc Connection :连接对象 主要作用: 一、创建执行 SQL 语句的对象 Statement createStatement() :执行 SQL 语句,有 SQL 注入的漏洞存在。 PreparedStatement prepareStatement(String sql) :预编译 SQL 语句,解决 SQL注入的漏洞。 CallableStatement prepareCall(String sql) :执行 SQL 中存储过程. 二、进行事务的管理 setAutoCommit(boolean autoCommit):设置事务是否自动提交。 commit():事务提交 rollback():事务回滚 Statement :执行 SQL 主要作用: 一、执行 SQL 语句 boolean execute(String sql):执行 SQL,执行 select 语句返回 true,否则返回 false ResultSet executeQuery(String sql):执行 SQL 中的 select 语句 int executeUpdate(String sql):执行 SQL 中的 insert/update/delete 语句 二、执行批处理操作 addBatch(String sql):添加到批处理 executeBatch():执行批处理 clearBatch():清空批处理 ResultSet:结果集 结果集:其实就是查询语句(select)语句查询的结果的封装。 主要作用:结果集获取查询到的结果的。 next():针对不同的类型的数据可以使用 getXXX()获取数据,通用的获取数据的方法: getObject();

SQL注入漏洞解决

PreparedStatement是Statement的子接口,它的实例对象可以通过调用 Connection.preparedStatement(sql)方法获得,相对于Statement对象而 言: – PreperedStatement可以避免SQL注入的问题。 – Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。 PreparedStatement 可对SQL进行预编译,从而提高数据库的执行效率。 – 并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行 替换,简化sql语句的编写。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.04.30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JDBC概述
  • JDBC
  • API
  • SQL注入漏洞解决
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档