【java】JDBC链接

2023-11-15

一、JDBC API

主要功能:与数据库建立连接、执行SQL语句、处理结果

  • DriverManager:依赖数据库的不同,管理JDBC驱动
  • Connection:负责链接数据库并担任传输数据的任务
  • Statement:由Connection产生,负责执行SQL语句
  • ResultSet:负责保存Statement执行后所产生的查询结果

二、JDBC加载

try{
    Class.forName(JDBC驱动类);//加载JDCB驱动
}
......
try{
    Connention con = DriverManager.getConnection(URL,数据库名称,密码);//与数据库建立连接(URKL用来标识数据库)
    
    Statement stmt = con.creatStatement();
    ResultSet rs = stmt.executeQuery("SELECT a,b,c FROM table1;");//发送sql语句,并得到返回结果
    
    while(rs.next()){
        int x = rs.getInt("a");
        String s = rs.getString("b");
        float f = rs.getFloat("c");
    }//处理返回结果
}catch{
    ......
}finally{
    rs.close;
    stmt.close;
    con.close;
}
......

三、JDBC连接

Class.forName("com.mysql.jdbc.Driver")//加载驱动,需要下载相关数据库的专用驱动
    
Connection conn = DriverManager.getConnect("jdbc:mysql://localhost:3306/db_name","root", "0000")//使用数据库用户和密码建立连接。注意:mysql8需要在URL中配置时区

MySQL8:

驱动:com.mysql.cj.jdbc.Driver

URL:jdbc:mysql://localhost:3306/mysql?characterEncoding=utf8&useSSL=fals
e&serverTimezone=UTC&rewriteBatchedStatements=true

MySQL5:

驱动: com.mysql.jdbc.Driver

URL:jdbc:mysql://localhost:3306/school?useUnicode=true&characterEnco
ding=utf8

四、API常用方法

Statement

方法名 说明
ResultSet executeQuery(String sql) 执行SQL语句查询并获取到ResultSet对象
int executeUpdate(String sql) 可以执行插入,删除,更新等操作,返回值是执行该操作所影响的行数
boolean execute(String sql) 可以执行任意sql语句,然后获得一个布尔值,表示是否返回ResultSet
int getUpdateCount() 获取execute后的操作行数

ResultSet

方法名 说明
boolean next() 将游标向下移动一行
boolean previous() 将游标向上移动一行
void close() 关闭ResultSet对象
int getInt(int colIndex) 以int形式获取结果集当前行指定列号值
int getInt(String colLabel) 以int形式获取结果集当前行指定列名值
float getFloat(int colIndex) 以float形式获取结果集当前行指定列号值
float getFloat(String colLabel) 以float形式获取结果集当前行指定列名值
String getString(int colIndex) 以String形式获取结果集当前行指定列号值
String getString(String colLabel) 以String形式获取结果集当前行指定列名值

五、PreparedStatement

1.为什么要使用PreparedStatement?

当我们通过数据库验证用户名密码时,普通的Statement使用的sql语句为拼接字符串,及“SELECT * FROM table1 WHERE userName=¥{用户输入的用户名},password=¥{用户输入的密码}”,此时,一旦密码参数输入为xxx”or“1"="1,sql语句就会变成*(省略前面语句) or 1 = 1,此语句绝对正确,也就是说前面的sql语句全部失效了,此时就会返回数据库的全部内容(sql注入),对数据库安全来说是极大的隐患。

2.PreparedStatement接口

PreparedStatement继承自Statement接口,比Statement使用起来更加灵活,更有效率。

  • 提高了代码的可读性与维护性
  • 提高了SQL语句执行的性能
  • 提高了安全性

3.接口使用

Connection conn = null;
PreparedStatement pstmt = null;//声明PreparedStatement变量

String sql="update table set name=?,pwd=? where id=?";//将参数换位占位符,避免出现sql注入

pstmt = conn.prepareStatement(sql);//创建PreparedStatement对象

pstmt.setInt(1, “吴彦祖”);
pstmt.setInt(2,123456);
pstmt.setInt(3, 1);//设置每个输入参数的值,参数1的序号与sql语句中的参数一一对应,顺序不能乱

pstmt.executeUpdate();//执行sql语句

......
pstmt.close();
conn.close();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【java】JDBC链接 的相关文章

随机推荐

  • 设计模式 简单工厂,策略模式,几种基本原则,Unity基础

    学习笔记 感受设计演变过程中蕴含的大智慧 体会乐于怒的程序人生中值得回味的一幕幕 设计模式来自于建筑领域 作为软件工程的一个分支 是在软件工程实践过程中 程序员们总结出的良好的编程方法 第一种模式 简单工厂模式 图片来源 点这里 上面是简单
  • RAM IP core(2)

    例化5种RAM IP core 1 单端口RAM Single port RAM RAM参数设置如上图所示 输入输出位宽都为8位 深度为16 采用一级输出寄存器 读写模式为no change 用COE文件对RAM进行初始化 关于COE文件的
  • BurpSuit在不同浏览器中配置代理

    BurpSuit配置代理 一 BurpSuit代理基础知识 通常情况下 用户通过浏览器浏览网页 通过浏览器 客户端 与服务器进行交互 既相互进行通信 若要想分析客户端和服务器交互的具体信息 就需要一个人当个中介 中间人 可以拦截两个人的信息
  • HTML5基础知识总结

    文章目录 01 HTML5基础 了解HTML5 新语义标签 网页布局结构标签及兼容处理 多媒体标签及属性介绍 新表单元素及属性 智能表单控件 表单属性 HTMl5中的API 获取页面元素及类名操作和自定义属性 文件读取 获取网络状态 获取地
  • sql union 列的字段不一样的时候

    转载于 https www cnblogs com shenzhichipingguo p 8916705 html
  • 69-Sqrt(x)

    题目 Implement int sqrt int x Compute and return the square root of x 分析 这个题里面是有许多陷阱的 首先确定用二分法处理这个问题 然而0 x之间的num的平方有可能会溢出
  • Apifox接口测试教程(一)接口测试的原理与工具

    前言 掌握了http协议 就掌握了接口测试 笔者在网络上看过不少接口测试教程 一上来就开始讲怎么操作工具 而不告诉读者为什么要这么操作 读者可能照猫画虎成功了 也可能操作失败了但不知为何出错 因此 本文作为接口测试的入门第一课首先会给大家了
  • 静态代码分析工具(一)—Scitools Understand

    一 概述 Understand是一个用来进行静态的软件分析 软件度量 软件可视化的工具 二 软件使用 1 安装 安装的是Understand 5 1 安装及另起可用网上很多资源 2 新建工程 创建工程名称 路径 选择语言 注意 在C C 后
  • (cLion、RubyMine、PyCharm、WebStorm、PhpStorm、Appcode、Clion、Idea) 万能破解,获取自己的注冊码...

    听说cLion的ide编写c c 很的棒 今天下载了一个仅仅有30天的使用时间 作为程序猿破解它 下载破解文件 点击下载 password 7biu 解压压缩包 然后打开命令行 cd 到解压文件夹 运行例如以下命令 java jar bui
  • HTTP协议初探

    发现网络协议的知识对后台开发人员来说 还是非常重要的 所以特地去了解了以下 并作学习笔记 方便自己查阅 HTTP协议详解 HTTP就是一个基于应用层的通信规范 双方要进行通信 大家都要遵守一个规范 HTTP协议 HTTP协议从WWW服务器传
  • 数值计算 --- 三次样条函数插值(Cubic spline function interpolation)

    三次样条函数插值 Cubic spline function interpolation Part I 插值 预备知识 什么是插值 已知部分离散的数据 但不知道满足这些数据的函数表达式 插值 和拟合 都是为了找到对应的函数表达式 区别在于
  • Python 积累总结

    for i j in DataFrame 遇到的问题 for i j in new data groupby by embryo id company id if j shape 0 2 relationshipdata relations
  • Android中Log信息的输出方法

    共两篇文章 第一篇讲述了如何在程序中输出Log信息 第二篇详细的分析了Log信息的输出机制 下面是第一篇 转自 http blog 163 com binghaitao 126 blog static 3383532520099309366
  • Angular 4/5 form表单select初始化选中(简单string和复杂对象)

    1 问题场景 管理员增删改查中的 改 操作 管理员有性别 sex 和岗位 position 属性 其中 性别在后端为枚举类型 position为类 要求进入管理员修改页时 自动选择性别 通过接口获取所有岗位 并自动选中当前管理员的岗位 2
  • live555构建流媒体服务器(1)

    读test 264码流文件 客户端可以通过ffplay exe rtsp xxx播放出来 直接使用编译好的库 改自testOnDemandRTSPServer cpp include liveMedia hh include BasicUs
  • 【maven】论 maven settings 文件 mirrors 对 IDEA 的影响

    文章目录 1 概述 1 概述 事情是这样的 我们要升级flink 1 9 1 升级到 1 12 4 然后因为在内网 所以我拷贝了大量的jar包 然后先放在本地 然后再放入内网的私服上 结果 我的代码需要大量的显示引入包 才能因为依赖 不然到
  • 如何用ChatGPT制作xmind

    第一步 向ChatGPT提问内容Q 去旅游要分几个步骤 第二步 输出格式Q 转换markdown格式点击右上角 copy code注意 如果结果不是代码形式 补充一句提问 请用代码形式呈现 第三步 复制到text 改后缀 1 复制到text
  • Coverity 代码静态安全检测

    转自 http blog csdn net yasi xi article details 8349985 最近公司在推行代码Security检查 使用了Coverity代码静态检测工具 功能很强大 超乎我的期望 主要功能如下 列出不会被执
  • inline在c语言作用,[转载]C语言标准C99 内联函数(inline)总结

    1 定义 它们看起来象函数 运作起来象函数 比宏 macro 要好得多 使用时还不需要承担函数调用的开销 当内联一个函数时 编译器可以对函数体执行特定环境下的优化工作 这样的优化对 正常 的函数调用是不可能的 2 规则 inline关键字必
  • 【java】JDBC链接

    文章目录 一 JDBC API 二 JDBC加载 三 JDBC连接 MySQL8 MySQL5 四 API常用方法 Statement ResultSet 五 PreparedStatement 1 为什么要使用PreparedStatem