JDBC

JDBC工作原理

• JDBC定义接口
• 数据库厂商实现接口
• 程序员调用接口,实际调用的是底层数据库厂商的实现部分
在这里插入图片描述

JDBC核心类(接口)介绍

JDBC中的核心类有:DriverManager、Connection、Statement,和ResultSet。
1.连接:Connection
2.操作数据 Statement
3.结果 ResultSet

具体实现步骤

1.导jar包 数据库驱动包-JDBC实现类
mysql-connector
ojdbc

2.连接数据库
a.加载驱动类
com.mysql.jdbc.Driver
oracle.jdbc.OracleDriver
可能产生异常:
1.类名写错 2.jar包没有导入
mysql: Class.forName(“com.mysql.jdbc.Driver”);
oracle: Class.forName(“oracle.jdbc.OracleDriver”);

b.获得数据库连接 工具类 DriverManager
oracle :ip port sid username password
mysql:ip port username password database

oracle-jdbc:oracle:@thin:192.168.6.66:1521:orcl ip 端口 sid
mysql-jdbc:mysql://127.0.0.1:3306/test ip 端口 库
mysql-jdbc:mysql:///test 只适用于本地默认端口号的数据库

可能产生异常 SQLException
账号密码错
url错误
例:
Class.forName(“com.mysql.jdbc.Driver”);
Connection conn = DriverManager.getConnection(“jdbc:mysql:///test”, “root”, “123456”);
Statement stmt=conn.createStatement();

c.操作数据库
String sql1=“alter table func add(agee int(2))”;
boolean b=stmt.execute(sql1);
System.out.println(b);//返回false 因为修改表结构无返回值

        stmt.executeQuery();//DQL,有返回集ResultSet 
        stmt.execute();//DDL DML  DQL
        stmt.executeUpdate();//DML

sql注入

例:通过字符串拼接,拼接成一个恒成立的条件
改变了原来的语义
password=‘a’ or ‘b’=‘b’
解决:预编译的Statement
半成品sql 先进行预编译 确定了语义

        Connection conn= JDBCUtils.getConnection();
        String sql= "insert into user_cj values(null,?,null,?)";
        PreparedStatement stmt=conn.prepareStatement(sql);//注入sql语句了
       
        for(int i=0;i<100;i++){
        stmt.setInt(1,i);
        stmt.setInt(2,i);
        stmt.addBatch();//将sql语句加入执行队列中
        }
        stmt.executeBatch();//批量执行sql语句

分页查询

oracle:rownum 5~10 下标从1开始
select * from
(select rownum n, name from user) u
where u.n between 5 and 10;

mysql:
select * from user limt 4,6; 下标从0开始 从4开始 取6条
效率较低,将数据全部查询后 取需要的数据
数据量越大 效率越低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值