• 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基础学习笔记的更多相关文章

  1. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  2. Maven基础学习笔记

    Maven基础学习笔记 下载链接 官网:https://maven.apache.org/ 所有版本:https://archive.apache.org/dist/maven/maven-3/ 阿里 ...

  3. 【C#编程基础学习笔记】4---Convert类型转换

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...

  4. 【C#编程基础学习笔记】6---变量的命名

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...

  5. 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)

    技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...

  6. Mysql数据库基础学习笔记

    Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...

  7. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  8. Java基础学习笔记(一)

    Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...

  9. C#RabbitMQ基础学习笔记

    RabbitMQ基础学习笔记(C#代码示例) 一.定义: MQ是MessageQueue,消息队列的简称(是流行的开源消息队列系统,利用erlang语言开发).MQ是一种应用程序对应用程序的通信方法. ...

随机推荐

  1. 洛谷P3810 陌上花开 (cdq)

    最近才学了cdq,所以用cdq写的代码(这道题也是cdq的模板题) 这道题是个三维偏序问题,先对第一维排序,然后去掉重复的,然后cdq分治即可. 为什么要去掉重复的呢?因为相同的元素互相之间都能贡献, ...

  2. 掌控(control) 方法记录

    掌控(control) 题面描述 公元\(2044\)年,人类进入了宇宙纪元.L国有\(n\)个星球,分别编号为\(1\)到\(n\),每一星球上有一个球长.有些球长十分强大,可以管理或掌控其他星球的 ...

  3. 部署 LNMP(源码安装版本)shell脚本

    #!/bin/bash # 一键部署 LNMP(源码安装版本) menu() { clear echo " ##############‐‐‐‐Menu‐‐‐‐##############& ...

  4. mongodb基础整理篇————副本概念篇[外篇]

    前言 副本集整理. 开始逐步把mongodb博客补齐了. 正文 什么是副本集 副本集是一组服务器,其中一个是用于处理写入操作的主节点,还有多个用于保存主节点的数据副本的从节点. 如果主节点崩溃了,则从 ...

  5. C语言常见的八大排序(详解)

    冒泡排序 优点:写起来简单 缺点:运算量过大每两个之间就要比较一次 冒泡排序在一组需要排序的数组中,对两两数据顺序与要求顺序相反时,交换数据,使大的数据往后移,每趟排序将最大的数放在最后的位置上 如下 ...

  6. 项目实战:在线报价采购系统(React +SpreadJS+Echarts)

    小伙伴们对采购系统肯定不陌生,小到出差路费.部门物资采购:大到生产计划.原料成本预估都会涉及到该系统. 管理人员可以通过采购系统减少管理成本,说是管理利器毫不过分,对于采购的效率提升也有极大帮助. 但 ...

  7. Win环境安装Protobuf 2.0 版本

    转载请注明出处: 安装步骤 下载 protobuf-2.5.0.zip 与 protoc-2.5.0-win32.zip 下载链接 : https://github.com/protocolbuffe ...

  8. Java多线程(6):锁与AQS(下)

    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- 之前说过,AQS(抽象队列同步器)是Java锁机制的底层实现.既然它这么优秀,是骡子是马,就拉出来溜溜吧. 首先用重入锁来实现简单的累加,就像这 ...

  9. 「MySQL高级篇」MySQL之MVCC实现原理&&事务隔离级别的实现

    大家好,我是melo,一名大三后台练习生,死去的MVCC突然开始拷打我! 引言 MVCC,非常顺口的一个词,翻译起来却不是特别顺口:多版本并发控制. 其中多版本是指什么呢?一条记录的多个版本. 并发控 ...

  10. 支持向量机(SVM)公式整理

    支持向量机可以分为三类: 线性可分的情况 ==> 硬间隔最大化 ==> 硬间隔SVM 近似线性可分的情况 ==> 软间隔最大化 ==> 线性支持向量机 线性不可分的情况 ==& ...