• 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. 谣言检测(ClaHi-GAT)《Rumor Detection on Twitter with Claim-Guided Hierarchical Graph Attention Networks》

    论文信息 论文标题:Rumor Detection on Twitter with Claim-Guided Hierarchical Graph Attention Networks论文作者:Erx ...

  2. 关于Springboot启动报错 Whitelabel Error Page: This application has no explicit mapping

    Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as ...

  3. Linux实战笔记_CentOS7_yum相关配置

    配置yum源优先级 配置优先级 yum -y install yum-plugin-priorities.noarch vi /etc/yum.repos.d/localISO.repo priori ...

  4. 11.mixins混合类

      一.混合类(mixins) 使用基于类的视图,最大的优势之一就创建可复用的代码 我们编写的非常类似的代码,可以抽象出来,将这部分代码放到mixin类系列中,然后作为父类提供子类继承使用 from ...

  5. Tauri-Vue3桌面端聊天室|tauri+vite3仿微信|tauri聊天程序EXE

    基于tauri+vue3.js+vite3跨桌面端仿微信聊天实例TauriVue3Chat. tauri-chat 运用最新tauri+vue3+vite3+element-plus+v3layer等 ...

  6. Golang 和 Python 随机生成N位字符串

    Golang: func RandomString(n int) string { var letters = []byte("ABCDEFGHIGKLMNOPQRSTUVWXYZabcde ...

  7. Codeforces Round #812 (Div. 2) E(并查集)

    种类并查集:定义种类之间的关系来判断操作是否进行 题目大意:对于题目给出的一个矩阵,我们可以进行一种操作:swap(a[i][j],a[j][i]) 使得矩阵可以变换为字典序最小的矩阵 思路: 通过扫 ...

  8. Kubernetes核心技术-Controller

    Kubernetes核心技术-Controller 内容 什么是Controller Pod和Controller的关系 Deployment控制器应用场景Deployment控制器应用 yaml文件 ...

  9. 深度学习之logistics回归

    在开始之前,事先声明本文参考[中文][吴恩达课后编程作业]Course 1 - 神经网络和深度学习 - 第二周作业_何宽的博客-CSDN博客_吴恩达课后编程作业 加上自己的理解,希望可以不用重复看吴恩 ...

  10. float16与float32转换

    // based on https://gist.github.com/martin-kallman/5049614 // float32 // Martin Kallman // // Fast h ...