栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据库连接-----JDBC

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据库连接-----JDBC

目录

JDBC概念

JDBC使用步骤

JDBC创建及注入

JDBC常见问题

驱动版本

中文乱码

常见错误


​​​​​​​

JDBC概念

JDBC(Java Database Connectivity)。但它只是规范,不做具体实现

调用方式有三种:

                                Statement语句、

                                PreparedStatement预处理语句、

                                CallableStatement存储过程,

推荐使用第二种PreparedStatement,防止SQL注入,其也是预编译性能高。

JDBC使用步骤

导入jar包(丰富的工具类)

获取和数据库的连接(用户名、密码)

通过程序执行SQL

通过程序处理结果

idea 创建项目并导入jar包

创建stage2 Java工程创建lib目录,拷贝驱动objbc6-11.1.0.7.0到lib目录下项目引用这个外部jar包

JDBC创建及注入
//解决SQL注入攻击的方案
private static void login2() {
    try{
        Class.forName("com.mysql.jdbc.Driver");
        String url="jdbc:mysql:///cgb2104?characterEncoding=utf8";
        Connection conn = DriverManager.getConnection(url, "root", "root");
//            Statement st = conn.createStatement();不行,不安全,会被SQL攻击

        String user = new Scanner(System.in).nextLine();//用户输入jack'#
        String pwd = new Scanner(System.in).nextLine();
        //?叫占位符 ,SQL的骨架
String sql ="select * from user2 where name=? and password=?";
        //先把SQL骨架发给数据库执行
        PreparedStatement ps = conn.prepareStatement(sql);
        //给SQL里的? 设置参数
        ps.setString(1,user);//给第一个?设置值是user
        ps.setString(2,pwd);//给第二个?设置值是pwd
        
        ResultSet rs = ps.executeQuery();//执行拼接好的SQL,返回结果集

        if(rs.next()){
            System.out.println("登录成功~");
        }else{
            System.out.println("登录失败~");
        }
        ps.close();
        conn.close();
    }catch(Exception e){
        e.printStackTrace();//有异常,直接打印异常信息
        //System.out.println("执行失败。。。");//上线
    }
}

JDBC常见问题

驱动版本

Mysql5.0x mysql-connector-java-5.1.32.jar

Mysql8.0x mysql-connector-java-8.0.21.jar

Driver变成了: com.mysql.cj.jdbc.Driver,中间多了cjurl必须加时区参数: serverTimezone=Asia/Shanghai

中文乱码

url增加参数:characterEncoding=utf8防止中文乱码

String url ="jdbc:mysql://localhost:3306/mydb?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false";

常见错误

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

错误原因:

1)jar没有导入,没有builder path

2)Class.forName("com.mysql.jdbc.Driver"); 字符串拼写错误

Unknown database mydb;

错误原因:

数据库名称拼写错误

Access denied for user ‘root123’@‘localhost’ (using password: YES)

错误原因:

数据库用户名或者密码错误

Table ‘py-school-db.mydb’ doesn’t exist

错误原因:

表不存在,也可能表名写错了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/713375.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号