JDBC基础代码书写

(仅个人学习笔记)

基础知识补充

一、代码书写顺序

  1. 加载驱动
  2. 连接数据库
  3. 创建用于执行SQL语句的对象
  4. 书写SQL语句
  5. 执行SQL语句
  6. 对执行后的结果进行操作(具体看需求是否需要操作)
  7. 关闭释放资源

二、代码示例

//仅演示步骤
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Demo01 {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1. 加载驱动Class.forName("com.mysql.jdbc.Driver");//2. 连接数据库(url连接字符串,账号,密码)//(8.X jdbc:mysql://localhost:3306?serverTimezone=UTC)Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","");//school数据库名//3.创建一个用于执行SQL语句的对象(新建查询)Statement statement = conn.createStatement();//4.书写SQl语句String sql = "select * from student";//5.执行SQL语句ResultSet rs = statement.executeQuery(sql);//6.把查询结果保存while(rs.next()) {//把数据保存String gradeName = rs.getString(2);System.out.println(rs.getObject(1) + "---" + rs.getObject(2));}//7.关闭并释放资源rs.close();statement.close();conn.close();}}

三、具体示例

  1. 书写加载驱动类代码(mysql
//加载驱动类
Class.forName("com.mysql.jdbc.Driver");
  1. 连接数据库
//建立连接(连接对象内部其实包含了Socket对象,是一个远程连接,比较耗时,这是Connection对象管理的一个要点!)
//真正开发中,为了提高效率,都会使用连接池来管理连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/library","root","");
// library:数据库名
//     root:用户名
//     "":密码

注意: 导包(包路径)

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
  1. 输入SQL语句

    1. Statement类
import java.sql.Statement;//创建statement对象
Statement stmt = conn.createStatement();
//创建SQL语句(注意:字符串要加'')
String sql = "insert into reader values(5,'aaa',15,'aa')";
//输入sql语句
stmt.execute(sql);

​ 注意:Statement类 在实际开发中一般不使用

​ 1. 语句是以字符串的形式

​ 如果传入的是变量,就要使用字符串拼接的形式(使用麻烦)

  1. String name = "java测试";
    //创建SQL语句(注意:字符串要加'')
    String sql1 = "insert into reader values(6,'"+name+"',15,'aa')";
    //输入sql1语句
    stmt.execute(sql1);
    
  2. ​ 2.可能会发生SQL注入(漏洞)问题(因为字符串无法进行输入数据监测,可能会发生恶意数据输入)

//测试SQL注入(将会将数据全部删除)
String id = "5 or 1=1";
String sql2 = "delete from reader where id=" + id;
  1. PreparedStatement类继承Statement类

    优点:

    1. 预处理提高效率
    2. 防止SQL注入
import java.sql.PreparedStatement;//创建PreparedStatement对象
String sql = "insert into reader values(8,?,15,?)";//?:占位符
PreparedStatement ps = conn.prepareStatement(sql);
//ps.setString(1, "无情");//参数索引是从1开始算,不是0
//ps.setString(2, "真实");
//还可以直接使用Object,就可以不用关心是什么类型
ps.setObject(1,"无情铁手");
ps.setObject(2,"真实伤害");
//传入语句
ps.execute();
  1. 执行SQL语句,并进行操作

    • 常用方法
    • executeQuery()使用
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/library","root","");
String sql = "select * from reader";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
//一般使用列名获取信息
while(rs.next()){ System.out.println(rs.getObject(1)+"---"+rs.getObject(2)+"---"+rs.getObject(3)+"---"+rs.getObject(4));
}
  1. 关闭
//关闭时
//顺序:注意后开的先关
//其他:将每个都分开写,可以保证一个出现异常时其他的也能正常关闭
if(rs != null) {try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}
}
if(ps != null) {try {ps.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}
}if(conn != null) {try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}
}

3.JDBC基础代码书写相关推荐

  1. 第一章 JDBC基础操作 ② 代码

    第一章 JDBC基础操作 ② 代码 1.jar包的安装与异常处理 1.1安装jar包 1.2 异常报错 3.异常处理 2.连接数据库 3.调用数据库 3.1 异常处理 4.数据库操作:增删改查 5.定 ...

  2. 天勤考研中数据结构的代码书写规范以及C与C++语言基础

    考研综合应用题中算法设计部分的代码书写规范 头文件 头文件部分如果题目没有特殊说明可以去掉. 常量 如果题目中要用到一个常量,则在用的地方加上一句注释,说明某某常量已定义即可,不必在前面补上#defi ...

  3. 【php基础入门】PHP环境搭建与初识php代码书写及演示PHP和JS中遍历数组的区别、引入外部文件等知识点学习笔记

    php是什么? PHP是PHP:HypertextPreprocessor(超文本预处理器)的首字母缩写,是一种跨平台的.开源的.免费的脚本语言,其语法吸收了C语言.Java 和 Perl 的特点,利 ...

  4. MySQL与JDBC基础

    ©Copyright 思思不羡仙 Date:2021-04 1. MySQL环境 1.1 安装卸载 使用 cd 命令至zip解压文件夹目录(不能有中文) 安装MySQL mysqld --instal ...

  5. JDBC基础知识复习

    JDBC基础知识复习 1.JDBC连接数据库 1.1.导入JDBC驱动 1.2.注册JDBC驱动程序 1.3.创建连接对象 1.4.关闭JDBC连接 1.5.每种数据库对应的驱动名和URL 2.JDB ...

  6. javascript历史、作用、三大组成、javascript代码书写位置、注意事项、变量

    JavaScript简介 JavaScript历史: JavaScript是一门解释型.动态类型.基于对象的脚本语言(不需要编译,直接执行,与之相对的是编译型语言),由美国网景公司的布兰登·艾奇发明, ...

  7. 2.1.3 JavaScript代码书写规则

    2.1.3 JavaScript代码书写规则 http://book.51cto.com  2010-12-22 11:11  高宏  机械工业出版社  我要评论(0) 摘要:<JavaScri ...

  8. 机器学习算法 09-02 TensorFlow核心概念 TensorFlow基础代码、TensorFlow线性回归解析解和BGD求法

    目录 1 核心概念 2 代码流程 3 基础代码: 3.1 tf的版本 定义常量 理解tensor 了解session 3. 2   指定设备.  Variable 初始化 .  with块创建sess ...

  9. JDBC 基础、CRUD、分页 第一节

    JDBC基础知识 JDBC 简介 1.持久化 把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以"固化",而 ...

最新文章

  1. 解决Titanium Tab组件click事件在iOS中不生效的方案
  2. MySQL创建数据库时指定编码和用户授权
  3. SAP Cloud for Customer Individual Customer的UI建模
  4. 倍福(Beckhoff)嵌入式控制器PLC
  5. 学术牛人教你如何阅读外国文献
  6. 简述python的优点_Python是什么及Python的优点和缺点
  7. JQueryDOM之查找节点
  8. jsp标签 meta的解释
  9. java取消科学计数法_Jmeter、Java当double显示的数字过长时取消科学计数法显示
  10. Matlab中xtickformat函数
  11. android 飞行模式 wifi,解决飞行模式下手机用wifi的问题
  12. 【解决】Failed to process import candidates for configuration class [cn.itcast.eureka.EurekaApplication]
  13. 老徐WEB:js入门学习 - javascript对象之Array对象
  14. PI AAE (Advanced Adapter Engine) 介绍一
  15. 从陈磊接棒后首份财报看拼多多农业版图2.0
  16. zigbee中的CSMA-CA载波检测多路访问-碰撞避免和信标(Beacon)VS非信标(Nonbeacon)网络
  17. iPhone手机史上最全的扫盲帖【越狱,解锁,激活,Cydia,基带,裸机】
  18. 复工“神器”华为云WeLink是怎样炼成的?
  19. miix4 装linux,联想miix4笔记本u盘安装win7系统步骤
  20. TOJ 3471.Happy XiaoXiao Guo

热门文章

  1. [SFML]使用SFML复刻一个九宫幻卡小游戏(二)项目创建和SFML的配置
  2. 苹果发布会说明了什么?
  3. linux内核5.8.1,Linus Torvalds宣布大规模更新Linux内核5.8
  4. linux内核zfs,Linus Torvalds回应用户抱怨:不建议使用 ZFS On Linux
  5. 【视频+图文 直播贴】2014.9.9 Apple苹果发布会
  6. python数学建模(三)插值常用库和模块
  7. ROS可以不扫描地图,自己制作地图
  8. 源码分析学习记录(11)——半边结构
  9. Linux 环境下配置远程jupyter notebook server
  10. 从优化角度推导主成分分析法(PCA)的数学原理