JDBC概念和基本用法
2024-10-21 11:30:18
概念:
JDBC (Java DataBase Connectivity):Java数据库连接,Java语言操作数据库。是官方(sun公司)定义的一套操作所有关系型数据库的规则, 即接口。各个数据库厂商去实现这个接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
实现步骤:
1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
1.1.复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下
1.2.右键-->Add As Library
2. 注册驱动
3. 获取数据库连接对象 Connection
4. 定义sql
5. 获取执行sql语句的对象 Statement
6. 执行sql,接受返回结果
7. 处理结果
8. 释放资源
具体代码实现:
- 注册驱动
- 获取数据库连接对象(Connection)定义SQL语句
- 获取执行SQL语句对象的(Statement)
- 执行SQL,返回结果
- 释放资源
详解各个对象:- DriverManager:驱动管理对象
功能:1、注册驱动:告诉程序使用哪一个数据库驱动jar* 代码注意:在使用Class.forName("com.mysql.cj.jdbc.Driver")时,会提示报错,需要使用try或throw另外:MySQL5之后的驱动jar包可以省略注册驱动的步骤2、获取数据库连接:* 参数:-- url:指定连接的ip地址和端口jdbc:mysql://IP地址:端口/数据库名?serverTimezone=时区注意:如果连接的是本机mysql服务器,且端口为3306,则url可以简写为:jdbc:mysql:///数据库名?serverTimezone=时区-- user:用户名-- password:密码* 对象实现Connection 对象名 = DriverManager.getConnection( url, user, password )- Connection:数据库连接对象
功能:1、获取执行sql的对象:Statement 对象名 = 数据库连接对象.createStatement( )PreparedStatement 对象名 = 数据库连接对象.prepareStatement(String sql)2、管理事务:开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务提交事务:commit( )回滚事务:rollback( )- Statement:执行sql的对象
功能:执行sql1、boolean execute(String sql):可以执行任意的sql,返回执行成功与否的布尔值2、int executeUpdate(String sql):可以执行DML(insert, delete, update)语句,DDL(create, alter, drop)语句,返回影响的行数,如果行数大于0,说明执行成功,否则失败3、ResultSet executeQuery(String sql):执行DQL(select)语句- ResultSet:结果集对象,封装了查询的结果
方法:1、boolean next( ):判断当前行是否是最后一行末尾,如果是,返回false,否则返回true2、getXxx(参数):获取指定列的数据* 其中,Xxx有如下类型:-- int getInt( )-- String getString( )-- boolean getBoolean( )-- date getDate( ) 等等可以参考下表进行变换* 参数:-- int类型:代表列的索引,从1开始,比如说想获取第一列的数据,用getString(1)-- String类型:代表列(字段)的名称,比如:getint("calary")注意:想要获取的列和使用的函数类型要尽量保持一致。- PreparedStatement:执行sql的对象,是Statement的子接口
1. SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题1. 输入用户随便,输入密码:a' or 'a' = 'a2. sql:select * from user where username = 'fhdsjkf' and password = 'a' or 'a' = 'a'2. 解决sql注入问题:使用PreparedStatement对象来解决3. 预编译的SQL:参数使用?作为占位符4. 步骤:1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar2. 注册驱动3. 获取数据库连接对象 Connection4. 定义sql* 注意:sql的参数使用?作为占位符。 如:select * from user where username = ? and password = ?;5. 获取执行sql语句的对象 PreparedStatement Connection.prepareStatement(String sql)6. 给?赋值:* 方法: setXxx(参数1,参数2)* 参数1:?的位置编号 从1 开始* 参数2:?的值7. 执行sql,接受返回结果,不需要传递sql语句8. 处理结果9. 释放资源5. 注意:后期都会使用PreparedStatement来完成增删改查的所有操作1. 可以防止SQL注入2. 效率更高最新文章
- linux指令(一)文件的操作
- poj 1383 Labyrinth
- 用户 'IIS APPPOOL\ExportExcel' 登录失败。
- Python中pip安装问题解决
- [asp.net mvc 奇淫巧技] 02 - 巧用Razor引擎在Action内生成Html代码
- 看eShopOnContainers学一个EventBus
- 图像处理------泛洪填充算法(Flood Fill Algorithm) 油漆桶功能
- Diango + uwsgi + nginx 项目部署(可外网访问)
- PHP date() 函数
- 【Android 应用开发】Android 数据存储 之 SQLite数据库详解
- mybatis 插入 含有美元符号($) 字符串 报 java.lang.IndexOutOfBoundsException: No group 2 的问题
- 搭建 eclipse,maven,tomcat 环境
- mybatis中resultMap配置细则
- Exp8 Web基础 20154320 李超
- vmware ubuntu重置root密码
- DMA内存申请--dma_alloc_coherent 及 寄存器与内存【转】
- java定义一个二维数组
- nodejs XML和json互相转换
- ArcGIS鼠标滚轮方向之注册表篇
- <;<;世界是数字的>;>;读书笔记
热门文章