JDBC概念和基本用法
- 注册驱动
- 获取数据库连接对象(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. 效率更高JDBC概念和基本用法的更多相关文章
- Docker 概念及基本用法
Docker 概念及基本用法 一. 本节内容简介 本实验中我们初步接触Docker的概念和基本用法.需要依次完成下面几项任务: 理解Docker是什么 学习如何在Linux上安装Docker 学习如何 ...
- PHP-流的概念与详细用法
Stream是PHP开发里最容易被忽视的函数系列(SPL系列,Stream系列,pack函数,封装协议)之一,但其是个很有用也很重要的函数.Stream可以翻译为“流”,在Java里,流是一个很重要的 ...
- chipmunk 物理引擎的基本概念和基本用法
chipmunk是一个开源2D物理引擎, 项目主页:http://code.google.com/p/chipmunk-physics/ 工作需要研究了一下,这个引擎的资料还是不多,我阅读了所有的文档 ...
- JDBC概念和使用
JDBC学习: JAVA的数据获取方式: 1 直接声明变量并赋值. 2 Scanner类控制台输入 3 IO流(将硬盘存储中的数据读取 ...
- JDBC概念理解
##JDBC: 概念:Java DataBase Connectivity Java 数据库连接 Java语言操作数据库 JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则 ...
- 【Java EE】Day05 JDBC概念、对象、控制事务
一.基本概念 1.概念 Java Database Connectivity:Java数据库连接 2.本质 SUN公司提供的操作所有关系型数据库的规则,是一套接口 各厂商实现此接口,提供相应的驱动ja ...
- Spark SQL基本概念与基本用法
1. Spark SQL概述 1.1 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了两个编程抽象分别叫做DataFrame和DataSet,它们用于作为 ...
- Spark RDD基本概念与基本用法
1. 什么是RDD RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的集合.RDD具 ...
- qt model--view-delegate模式的界面设计概念,ListView用法
最经典的界面设计模式,必须知道. 作为 一种经典到 不能 再 经典 的 架构 模式, qt的model--view-delegate大 行其 道 有其 必然 的 道理. 通过 把 职责. 性质相近的 ...
- Docker的概念及基本用法
Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源.Docker提供了一种在安全.可 ...
随机推荐
- RN 报错信息总结
我使用的是 VScode 编辑器,有时候,卸载包,安装包就会编译失败,解决方式 gradlew clean 编译错误 Execution failed for task ':app:compileDe ...
- 10个.NetCore实用的开源框架项目
今天我们一起梳理下10个,比较受到大家欢迎的.NetCore开源框架项目.1.FytSoaCms 前后端分离CMS系统 项目简介 这是一个基于.Net 3构建的简单.跨平台.模块化建站系统.系统业务简 ...
- 16.java八皇后问题
问题描述:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即: 任意两个皇后都不能处于同一行 .同一列或同一斜线上,问有多少种摆法(92). 思路分析:1) 第一个皇后先放第一行第一列2) ...
- pyspark 结构化数据开发实例
什么是SPARK? 1. 先进的大数据分布式编程和计算框架 2. 替换Hadoop 中的MR计算引擎. 3. 内存分布式计算:运行数度快 4. 可以使用不同的语言编程(java,scala,r 和py ...
- git 提示 fatal: Authentication failed for....
在我们进行clone 或 pull 或 push的时候,出现这个问题,先想一下是不是自己的账号密码是不是改了 一般情况下通常需要重新重置一下验证设置 执行以下命令: git config --syst ...
- PR如何导出mp4格式的视频
PR如何导出mp4格式的视频 PR是一款强大的视频处理软件,有时我们想导出mp4格式的视频,但好像找不到这种格式,具体怎么操作呢?PR如何导出mp4格式的视频? 1.打开PR,然后处理完视频后,点击左 ...
- mysql学习问题解决
1.字符串转时间格式函数: STR_TO_DATE('2017-10-19 16:47:00', '%Y-%m-%d %H:%i:%s') oracle的为to_date 2.specified tw ...
- Day23:个人小结的撰写&&对coderunner的熟悉
今日完成的任务: 1.完成个人小结的撰写 2.阅读Moodle文档,了解Moodle平台以及Moodle出题格式 明日计划: 1.撰写总报告中的结论 2.将插件安装完成 每日小结: 为了研究题库,特 ...
- python_test_5001_Moudle_pandas
import pandas as pd import numpy as np from lib_001_decorator_log_funcname import decorator_log_func ...
- Python后端基础知识总结
1.所谓可变类型与不可变类型是指:是否可以在不改变原来数据的引用地址基础上,去修改数据.如果能直接修改那么就是可变,否则是不可变 不可变对象:该对象所指向的内存中的值不能被改变.当改变某个变量时候,由 ...