JDBC基础学习笔记
JDBC的理解:
JDBC是允许便捷式访问底层数据库的应用程序接口,JDO、Hibernate、MyBatis等只是更好的封装了JDBC。

JDBC的连接步骤:
1、注册驱动:
//反射机制
Class.forName("com.mysql.jdbc.Driver");
2、获取连接:
//可使用.properties配置文件来声明URL, USERNAME, PASSWORD
Connection con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
3、获取预编译数据库操作对象:
// Statement ps = con.createStatement();
String sql = "sql语句";
PreparedStatement ps = con.prepareStatement(sql);
4、执行SQL:
ResultSet rs = ps.executeUpdate();
5、处理结果集
6、释放资源:(顺序执行)
rs.close();
ps.close();
con.close();
PreparedStatement与Statement的区别:
1、PreparedStatement对象所代表的SQL语句中的参数用问号(?)来表示,执行效率高,能够避免sql注入,更安全。
2、Statement对象所代表的SQL语句中的参数不使用占位符表示,执行效率低,有sql注入的风险,缺乏安全性。
SQL注入的现象与解决方案:
1、SQL注入现象:
用户输入信息含有SQL语句的关键字,并且参与了sql的编译过程,导致sql语句原意扭曲。
2、解决办法:
采用PrepareStatement对sql语句框架进行预编译,再传值。
JDBC使用:
相关资料 密码:007j
1、调用工具类:
//JDBC工具库 import java.sql.*;
// JdbcUtil obj = new JdbcUtil(); obj.getCon()
// JdbcUtil obj = new JdbcUtil(); obj.createStatement();
// JdbcUtil.getCon();
public class JdbcUtil {
//final String URL="jdbc:mysql://localhost:3306/数据库名";
final String URL="jdbc:mysql://localhost:3306/student";
final String USERNAME="root";
//final String PASSWORD="密码";
final String PASSWORD="123456";
PreparedStatement ps= null;
Connection con = null; //注册驱动:将jar包中driver实现类加载到JVM中
static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} //获取连接:封装连接通道创建细节
public Connection getCon(){ try {
con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
return con;
} //获取预编译数据库操作对象:封装交通工具创建细节(预编译)
public PreparedStatement createStatement(String sql){ try {
ps = getCon().prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return ps;
}
//释放资源:ps与con销毁细节 insert,update,delete
public void close(){
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
} if(con!=null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
} } //select: ps,con,rs
public void close(ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
close();
}
}
2、业务逻辑层:
//JDBC封装库
private JdbcUtil util = new JdbcUtil(); @Override
//用户注册(SqlName:实体类)
public int add(SqlName sqlName) {
String sql = "insert into users(userName,pword)" + " values(?,?)";
//预编译
PreparedStatement ps = util.createStatement(sql);
int result = 0;
try {
//获取参数
ps.setString(1, sqlName.getUserName());
ps.setString(2, sqlName.getPword());
result = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
util.close();
}
return result;
}
JDBC基础学习笔记的更多相关文章
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- Maven基础学习笔记
Maven基础学习笔记 下载链接 官网:https://maven.apache.org/ 所有版本:https://archive.apache.org/dist/maven/maven-3/ 阿里 ...
- 【C#编程基础学习笔记】4---Convert类型转换
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...
- 【C#编程基础学习笔记】6---变量的命名
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...
- Mysql数据库基础学习笔记
Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
- C#RabbitMQ基础学习笔记
RabbitMQ基础学习笔记(C#代码示例) 一.定义: MQ是MessageQueue,消息队列的简称(是流行的开源消息队列系统,利用erlang语言开发).MQ是一种应用程序对应用程序的通信方法. ...
随机推荐
- Allure的简单使用
Allure的简单使用 1.Allure简介 简单的理解下,可以把Allure当成一个用于生成美观测试报告的开源工具,配合Pytest测试框架使用更佳. 也就是说,Allure是在Pytest执行测试 ...
- 洛谷P2216 HAOI2007 理想的正方形 (单调队列)
题目就是要求在n*m的矩形中找出一个k*k的正方形(理想正方形),使得这个正方形内最值之差最小(就是要维护最大值和最小值),显然我们可以用单调队列维护. 但是二维平面上单调队列怎么用? 我们先对行处理 ...
- hmtl5 web SQL 和indexDB
前端缓存有cookie,localStorage,sessionStorage,webSQL,indexDB: cookie:有缺点 localStorage:功能单一 sessionStorage: ...
- 【python】Ubuntu中多条命令的运行
在模型训练时,往往需要消融实验,通常都是在一个程序运行结束后才再次手动运行下一个,不及时在电脑前可能无端浪费时间,因此需要让程序自动一个接一个去执行.受此启发,特了解了Ubuntu中多命令运行的内容. ...
- Scanner的用法 从键盘输入
先导入包 import java.util.Scanner; 后输入 Scanner Sc=new Scanner(System.in); //(Sc可以自定义,无实质意义) int i; i=Sc. ...
- JSP中实现留言页面的编写并将留言信息展示出来
1.JavaBean类,实现java代码和html的部分分离,提高代码的复用 package com.wgh; public class MessageBean { private String au ...
- 齐博X1-栏目的调用3
本节继续说明栏目的调用之同级别栏目 同级栏目的调用 fun('sort@brother',$fid,'cms') 这个函数用的比较多,特别是栏目页,在一个页面会把一个父级栏目下的子级栏目全部列出来, ...
- .NET周报【10月第3期 2022-10-25】
国内文章 聊一聊被 .NET程序员 遗忘的 COM 组件 https://www.cnblogs.com/huangxincheng/p/16799234.html 将Windows编程中经典的COM ...
- 我的Vue之旅 09 数据数据库表的存储与获取实现 Mysql + Golang
第四期 · 将部分数据存储至Mysql,使用axios通过golang搭建的http服务器获取数据. 新建数据库 DROP DATABASE VUE; create database if not e ...
- 👍SpringSecurity单体项目最佳实践
SpringSecurity单体项目最佳实践 到这里,我们的SpringSecurity就已经完结啦,文章中可能有些地方不能做到全面覆盖,视频教程地址 初始项目地址 完成项目地址 1.搭建环境 建议下 ...