✅作者简介:CSDN内容合伙人,喜欢学习后端语言的大学生,同时也是一位新晋万粉博主
✨个人社区:微凉秋意社区
🔥系列专栏:JDBC技术
📃推荐一款模拟面试、刷题神器👉注册免费刷题
🔥前言
以前学习的数据库连接技术:
JDBC
,好久不使用都有些遗忘了,所以开了一个专栏来分享有关的知识。我会从基础概念到实战一步一步来,循序渐进的高效的记录复习jdbc知识,打下夯实的基础。如有感兴趣的朋友也可以订阅专栏一同学习进步哦。
JDBC:Java数据库连接技术
- 通过Java后台代码连接数据库对数据库内容进行增删改查
1、为什么要学习JDBC?
navicat也可以连接数据库对数据进行增删改查,但是并不能定制化用户数据,所以并不完全使用实战开发
但是 JDBC可以通过后台的其他代码完整用户数据的定制化
2、JDBC涉及到的API
3、JDBC的特点
[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:cbd04152-1014-4002-9394-6b0278ea13d5
[En]
[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:2e3230d7-c6b1-49d2-9c99-278ae0a02a1b
– JDBC中只有接口,并没有提供实现
2、JDBC操作数据库的六大步
3、JDBC的步骤实现
- ResultSet:结果集
- 底层原理:指针操作,类似
Iterator
迭代器 next()
:判断是否存有下一元素getXxx
(int类型的列的顺序,从1开始):获取某个字段的值- getXxx(“字段名”):获取某个字段的值
Xxx
:表示字段的数据类型,首字母大写- 指定字段名更常用,更清晰
String sql = "select * from t_student";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
while (rs.next()){
int stuId = rs.getInt(1);
String stuName = rs.getString(2);
int stuAge = rs.getInt(3);
String stuSex = rs.getString("stu_sex");
String stuClass = rs.getString("stu_class");
String stuplace = rs.getString("stu_place");
System.out.println(stuId+" "+stuName+" "+stuAge+" "+stuSex+" "+stuClass+" "+stuplace);
}
rs.close();
ps.close();
conn.close();
- 将用户输入的数据,绑定到SQL中
1、字符串拼接
package com.bz.test;
public class JDBCTest {
public static void main(String[] args) throws Exception{
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name=sc.next();
System.out.println("请输入你的年龄:");
int age=sc.nextInt();
System.out.println("请输入你的性别(男/女):");
String sex=sc.next();
System.out.println("请输入你的年级:");
String clazz=sc.next();
System.out.println("请输入你的地区:");
String place=sc.next();
String sql = "insert into t_student(stu_name,stu_age,stu_sex,stu_class,stu_place) VALUES('"+name+"',"+age+",'"+sex+"','"+clazz+"','"+place+"')";
System.out.println(sql);
PreparedStatement ps = conn.prepareStatement(sql);
int n = ps.executeUpdate();
if(n>0){
System.out.println("添加成功");
}else{
System.out.println("添加失败");
}
}
}
2、 ?占位符
- 是JDBC中的一种特殊语法,作用为进行数据绑定
- 使用方法:
- 在需要使用用户数据的位置,通过
?
代替(占位) - 在发送SQL之前,给占位符依次赋值
- *setXxx(占位符的序号(从1开始),占位符对应的值)
package com.bz.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Scanner;
public class JDBCTest {
public static void main(String[] args) throws Exception{
Class.forName("com.mysql.cj.jdbc.Driver");
String username = "root";
String pwd = "root";
String url = "jdbc:mysql://localhost:3306/2109?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai";
Connection conn = DriverManager.getConnection(url, username, pwd);
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name=sc.next();
System.out.println("请输入你的年龄:");
int age=sc.nextInt();
System.out.println("请输入你的性别(男/女):");
String sex=sc.next();
System.out.println("请输入你的年级:");
String clazz=sc.next();
System.out.println("请输入你的地区:");
String place=sc.next();
String sql = "insert into t_student(stu_name,stu_age,stu_sex,stu_class,stu_place) VALUES(?,?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,name);
ps.setInt(2,age);
ps.setString(3,sex);
ps.setString(4,clazz);
ps.setString(5,place);
int n = ps.executeUpdate();
if(n>0){
System.out.println("添加成功");
}else{
System.out.println("添加失败");
}
ps.close();
conn.close();
}
}
- SQL注入攻击:利用填写数据巧妙使SQL语句中的某些判断条件失效
方式特点使用场景实战建议字符串拼接可能被SQL注入攻击攻击可以拼接表名、字段名、关键字需要拼接关键字时使用,如:排序?占位符可以防止SQL注入攻击不能对表名、字段名、关键字占位通常使用都是占位符
可能出现的异常:
解决方案1:
解决方案2:
实战建议:
方案1+方案2
Original: https://blog.csdn.net/m0_58618795/article/details/126530872
Author: 微凉秋意
Title: 高效掌握JDBC技术(一)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/561450/
转载文章受原作者版权保护。转载请注明原作者出处!