【JDBC】关于JDBC入门和一些见解

2023-11-04

关于JDBC的一些理解和总结

JDBC连接数据库:

​ 刚开始学的时候经常忘记步骤,其实多了几次之后发现完全就是自己没有理解到原理。现在回头看还是挺有意思的。

分为以下几个步骤:

1.注册加载JDBC驱动,把Driver装进JVM

Class.forName("com.mysql.cj.jdbc.Driver");
Class.forName("com.mysql.jdbc.Driver");

com.mysql.jdbc.Driver 是 mysql-connector-java 5中的
com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6中的
在mysql5+的版本中都要加上cj 

2.建立连接

Connection conn = Drivermanager.getConnection(url,user,password);

url: mysql5 是只需要设置Unicode,Encoding和SSL; mysql5+版本则还需要设置serverTimezone的时区,必须设置为所在地区的

String url = "jdbc:mysql://localhost/boke?useUnicode=true&characterEncoding=utf-8&useSSL=false&useSSL=false&serverTimezone=GMT";

3.建立容器,实例化statement

Statement stmt = conn.createStatement();
PreparedStatement ps = conn.prepareStatement(sql);

我把这个视为执行所有操作的容器。

4.创立SQL语句,执行操作

String sql = "sql语句";
ResultSet res = stmt.executeQuery(sql);
//executeQuery()方法会把数据库响应的查询结果存放在ResultSet类对象中供我们使用。由于是封装好了的对象  所以在取值的时候需要对应index
while(res.next()){
   String parameter1 = res.getString(1);
   String parameter2 = res.getString(2);
   String parameter3 = res.getString(3);
   String parameter4 = res.getString(4);
   String parameter5 = res.getString(5);
    
   //打包
   User user = new User();
   user.setName(parameter1);
        。。。。。。。
}

总结

资源关闭

每次调用完成后记得关闭资源

public void close() throws SQLException {
		if (conn != null)
			conn.close();
		if (stmt != null)
			stmt.close();
		if (rs != null)
			rs.close();
	}

JDBC中,PreparedStatement相较于Statement有什么优点?

1)PreparedStatement可以使用预编译的sql,而Statment只能使用静态的sql

2)PreparedStatement可以使用sql缓存区,效率比Statment高

3)PreparedStatement可以有效防止sql注入,而Statment不能防止sql注入。

SQL注入问题:

​ 指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

以上为个人的一些见解,欢迎一起讨论。

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

【JDBC】关于JDBC入门和一些见解 的相关文章

  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • SQL不允许表中有重复记录

    如何使其不添加重复项 我想让它通过 ID 之外的所有其他列进行检查 我希望这个无效 ID col1 col2 col3 1 first middle last ID col1 col2 col3 2 first middle last 我希
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • 使用 JMF 创建 RTP 流时出现问题

    我正处于一个项目的早期阶段 需要使用 RTP 广播DataStream创建自MediaLocation 我正在遵循一些示例代码 该代码目前在rptManager initalize localAddress 出现错误 无法打开本地数据端口
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • 52-C语言-文件问题-把字符串中的小写字母变为大写字母,并输出到磁盘文件“test”中,输入的字符串以‘!’结束

    问题 从键盘输入一个字符串 将其中的小写字母全部转换成大写字母 然后输出到一个磁盘文件 test 中保存 输入的字符串以 结束 思路 从键盘输入字符串 char str 100 gets str 将其中的小写字母变为大写字母 并且给大写字母
  • linux查看mysql内存_查看数据库最占资源或内存的查询SQL

    1 使用下面查询修正数据库中最占资源的查询 select b username a DISK READS reads a EXECUTIONS exec a disk reads decode a executions 0 1 a exec
  • MySQL的常用函数大全

    一 字符串函数 常用函数 函数 功能 CONCAT s1 s2 sn 字符串拼接 将s1 s2 sn拼接成一个字符串 LOWER str 将字符串全部转为小写 UPPER str 将字符串全部转为大写 LPAD str n pad 左填充
  • 二、MySQL逻辑架构与常见存储引擎

    1 MySQL逻辑架构 MySQL逻辑架构主要分为3层 如下图所示 1 1 连接层 作用 用于与客户端的连接处理 授权认证 安全 权限校验等 每个客户端连接 在MySQL服务器端都会有一个线程与其相互对应 这个线程负责处理这个客户端连接的操
  • protobuf 中复合数据类型的读写

    背景 protobuf 在生成的 C 代码中为 proto 文件中的每个 message 生成了对应的 C 类 并提供了数据成员的读写方法 message 类型读写 message 示例 message Point double lng 1
  • #if defined(__cplusplus)

    由于C 编译器需要支持函数的重载 会改变函数的名称 因此dll的导出函数通常是标准C定义的 这就使得C和C 的互相调用变得很常见 但是有时可能又会直接用C来调用 不想重新写代码 让标准C编写的dll函数定义在C和C 编译器下都能编译通过 通
  • handsontable右键新增、删除改为按钮新增删除

    handsontable自带右键新增表格行和删除行功能 afterchange钩子中 但是实际使用中 右键功能并不容易被发现 用户的使用体验不好 所以需要把新增行和删除行的功能拿出来 在表格外使用按钮实现表格行的新增和删除 实现的效果如下图
  • Bug修改日记:SpringBoot项目启动报错: UnsatisfiedLinkError

    Bug修改日记 作者简介 努力的clz 一个努力编程的菜鸟 文章专栏 bug日志 记录一下平时开发过程中遇到的各种 疑难杂症 bug 分析过程以及解决办法 一 报错信息 UnsatisfiedLinkError 不满意的链接错误 no tc
  • 2023 年全国大学生电子设计竞赛仪器设备和主要元器件及器材清单

    本科组 1 仪器设备清单 直流稳压电源 具有恒流 恒压模式自动切换功能 0 30V 3A 双路 数字示波器 100MHz 双通道 函数发生器 50 MHz 双通道 射频信号源 500MHz 100dBm 0dBm 具有射频输出开关功能 矢量
  • docker-compose编排ELK,kibana报错Unable to revive connection: http://172.16.23.126:9200/

    问题描述 使用docker compose方式编排ELK环境 启动elasticsearch没有问题 浏览器访问内网es环境http 172 16 23 126 9200 cluster health pretty正常 但是kibana启动
  • MySQL导入.sql文件方法以及导入失败的问题解决

    首先这是聂老师的sql文件 MySQL dump 10 13 Distrib 8 0 27 for Win64 x86 64 Host localhost Database teaching Server version 8 0 27 40
  • Linux创始者托瓦兹谈及IoT --「安全在其次」

    本文译至 http japan zdnet com article 35080722 2 圣迭戈 Linux之父Linus Torvalds 在Linux Foundation主办的活动 Embedded Linux Conference
  • 阿里云学生计划领取攻略

    阿里云学生计划题目答案分享 由于朋友需要 便整理了一下给出分享 笔者概念性东西不是很好 如有错误多多包涵 文章部分题目来自网友 先给出阿里云学生疫情领取地址 点击这里这里这里这里 参考答案如下 数据库管理系统是 B A 操作系统的一部分 B
  • NETCore入门系列(Log4NET组件的使用)

    文章目录 分析 整合Log4net 源码 分析 1 官方自带的Log中间件可在命令行中输出日志 通过在构当前控制器的构造函数中注入 如下图 2 此时如果想要将日志输出到项目的某个文件中 则可以通过整合Log4net组件 3 一般建议日志记录
  • 算法:z字形排列

    将一个给定字符串根据给定的行数 以从上往下 从左到右进行 Z 字形排列 class Solution public string convert string s int numRows string result 如果排序长度为1 或者字
  • Python,OpenCV中的非局部均值去噪(Non-Local Means Denoising)

    Python OpenCV中的非局部均值去噪 Non Local Means Denoising 1 效果图 2 原理 3 源码 2 1 单彩色图去噪 2 2 多连续彩色帧去噪 参考 这篇博客将介绍不同的计算摄影技术 非局部均值去噪 Non
  • MYSQL 命令大全

    一 连接MySQL 格式 mysql h 主机地址 u 用户名 p 用户密码 1 例1 连接到本机上的MYSQL 首先在打开DOS 窗口 然后进入目录 mysqlbin 再键入命令mysql uroot p 回车后提示你输密码 如果刚安装好
  • PHY调试经验

    1 PHY调试过程 1 设备树中配置正确的PHY ADDR PHY ID clause 45或者22协议 PHY ADDR配置不正确会导致MDC MDIO通信不正常或失败 PHY ID用于匹配PHY驱动程序 2 通过MDC MDIO读写PH
  • Google亲儿子 Nexus/Pixel 手机刷机Root之旅

    简介 本文介绍的方法是针对Google亲儿子的教程 其他国内厂商请绕道 1 解锁 1 1 OEM解锁 想要做下面这些事 需要先在开发者选项里打开oem解锁 如果你的手机是V版 运营商定制版 请看这里 oem解锁选项灰色 1 2 进入boot
  • 【JDBC】关于JDBC入门和一些见解

    关于JDBC的一些理解和总结 JDBC连接数据库 刚开始学的时候经常忘记步骤 其实多了几次之后发现完全就是自己没有理解到原理 现在回头看还是挺有意思的 分为以下几个步骤 1 注册加载JDBC驱动 把Driver装进JVM Class for