高效掌握JDBC技术(一)(下)

简介: 高效掌握JDBC技术(一)

四、数据绑定

将用户输入的数据,绑定到SQL中

1、字符串拼接

1.在需要使用用户数据的位置,通过对应变量替换

2.如果为非字符串类型:"+变量名+"

3.如果为字符串类型(包含日期及枚举):' "+变量名+" '

package com.bz.test;
public class JDBCTest {
    public static void main(String[] args) throws  Exception{
        //1. 加载驱动
        //2. 获取连接
        //3. 准备发送SQL的工具,前三步省略
        //往学生表中添加一条学生信息
        //接收用户信息
        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();
        //根据用户填写的信息,书写SQL
        String sql = "insert into t_student(stu_name,stu_age,stu_sex,stu_class,stu_place) VALUES('"+name+"',"+age+",'"+sex+"','"+clazz+"','"+place+"')";
        //输出sql
        System.out.println(sql);
        PreparedStatement ps = conn.prepareStatement(sql);
        //4. 发送执行SQL
        int n = ps.executeUpdate();//执行SQL,增删改返回受影响条数
        if(n>0){
            System.out.println("添加成功");
        }else{
            System.out.println("添加失败");
        }
        //5. 结果集  略
        //6. 释放资源  略
    }
}

2、 ?占位符

是JDBC中的一种特殊语法,作用为进行数据绑定

使用方法:

1.在需要使用用户数据的位置,通过?代替(占位)

2.在发送SQL之前,给占位符依次赋值

3.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{
        //1. 加载驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //2. 获取连接
        //用户名
        String username = "root";
        //密码
        String pwd = "root";
        //连接的url
        String url = "jdbc:mysql://localhost:3306/2109?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai";
        Connection conn = DriverManager.getConnection(url, username, pwd);
        //3. 准备发送SQL的工具
        //往学生表中添加一条学生信息
        //接收用户信息
        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();
        //根据用户填写的信息,书写SQL
        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);
        //4. 发送执行SQL
        int n = ps.executeUpdate();//执行SQL,增删改返回受影响条数
        if(n>0){
            System.out.println("添加成功");
        }else{
            System.out.println("添加失败");
        }
        //5. 结果集  略
        //6. 释放资源
        ps.close();
        conn.close();
    }
}

两种数据绑定的区别

SQL注入攻击:利用填写数据巧妙使SQL语句中的某些判断条件失效

image.png

五、面对异常

可能出现的异常:


1.类加载问题:Driver的路径不对

2.数据库、用户名、密码不对

3.sql语法错误:在sql下方打印该语句,查看语法问题

4.数据绑定不对:字符串拼接错误、?占位符赋值有误

5.获取结果集字段值时有误:检查字段顺序、字段名、数据类型

解决方案1:


6.先查看控制台的异常日志,锁定实际抛出异常的代码位置

7.结合报错的详细信息,分析出错原因

8.复杂问题,尝试百度

解决方案2:


1.通过输出语句的位置,锁定实际抛出异常的代码位置

2.分析出错原因

实战建议:


方案1+方案2


1.观察异常日志,锁定出错位置

2.结合报错的详细信息+输出语句,确定出错的原因

3.复杂问题,尝试百度


目录
相关文章
|
4月前
|
SQL Java 关系型数据库
探索Java数据库连接的奥秘:JDBC技术全攻略
探索Java数据库连接的奥秘:JDBC技术全攻略
66 8
|
6月前
|
Java 数据库连接 API
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
68 3
|
6月前
|
存储 设计模式 搜索推荐
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(下)
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(下)
41 1
|
6月前
|
XML 前端开发 Java
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(上)
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(上)
37 0
|
6月前
|
SQL Java 关系型数据库
探索Java数据库连接的奥秘:JDBC技术全攻略
【6月更文挑战第24天】Java的JDBC是连接数据库的标准,提供统一API访问多种数据库。本文涵盖JDBC的基本概念、核心组件(如DriverManager、Connection、Statement、PreparedStatement和ResultSet)和最佳实践。示例展示了如何用JDBC连接MySQL,执行查询并处理结果。最佳实践包括使用PreparedStatement防SQL注入,妥善管理资源,处理异常,使用事务以及优化性能。了解和掌握JDBC能提升数据库操作的效率和安全性。
47 0
|
6月前
|
SQL Java 关系型数据库
探索Java数据库连接的奥秘:JDBC技术全攻略
【6月更文挑战第24天】Java的JDBC是连接Java和数据库的标准,提供统一的API访问各种数据库。核心组件包括DriverManager(加载驱动和创建连接)、Connection(表示数据库连接)、Statement(执行SQL)和PreparedStatement(参数化查询,防止SQL注入)。
36 0
|
6月前
|
SQL Java 关系型数据库
Java与数据库连接技术JDBC关键核心之PreparedStatement以及SQL注入演示解决和原理
Java与数据库连接技术JDBC关键核心之PreparedStatement以及SQL注入演示解决和原理
46 0
|
6月前
|
缓存 监控 druid
对比各大数据库连接池技术-Jdbc-Dbcp-C3p0-Druid-Hikaricp
对比各大数据库连接池技术-Jdbc-Dbcp-C3p0-Druid-Hikaricp
82 0
|
7月前
|
SQL Java 数据库连接
Java从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
ava从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
|
7月前
|
SQL Java 关系型数据库
JDBC技术文章
JDBC技术文章