JDBC学习【1】

JDBC

英文全称:Java databases connectivity
是Java 语言操作数据库的API(应用程序接口)
存在于Java的==java.sql.*==包
其中用到的接口有:
Connection 连接:代表了Java和数据库之间的通道,桥梁
Statement 语句:可以用来执行 inert ,update,delete,select…
ResultSet 结果集:代表的是查询的结果

【1】操作步骤顺序

1. 加载驱动(Driver)

jdbc的驱动就是一个连接工厂,生成的产品是连接对象。
com.mysql.jdbc.Driver 是Driver 的mysql实现类
oracle.jdbc.Driver 是Driver的oracle实现类
加载驱动的语句(jdbc3.0以上的版本都可以省略加载驱动这一步):Class.forName(“驱动类名”);
举例如下:

Class.forName("com.mysql.jdbc.Driver");

2.获取连接对象

获取连接对象的语句:
DriverManager.getConnection(url,用户名,密码);//内部调用了 Driver 对象获取数据库连接

Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);

其中URL的格式如下:
URL:“jdbc:mysql://ip地址:端口号/数据库名?参数”
举例如下:
String URL="“jdbc:mysql://localhost:3306/school?”";
String USERNAME=“root”;
String PASSWORD=“root”;
也就是

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");

3.创建语句

创建语句的语句:

Statement rows = conn.createStatement();

4.执行sql

执行sql语句:

int rows = stmt.executeUpdate(sql1);//用来执行insert,update,delete,DDL 返回值代表行数

ResultSet rs = stmt.executeQuery(sql2);//用来执行select

5.释放资源

rs.close();
stmt.close();
conn.close();

这里要注意的是释放资源的顺序,先打开的后释放,后打开的先释放。

【2】PreparedStatement 预编译语句对象

Java语句:
Statement stmt = conn.createStatement();
stmt.executeUpdate(String sql);

1. 需要预先提供sql语句

PreparedStatement psmt = conn.prepareStatement(String sql);

2. 可以在sql中用?占位某个值

insert into student(sid,sname,birthday,sex) values(null, ?, ?, ?)

3. 给?赋值

使用PreparedStatement中一系列以 set开头的方法
setString(?的位置,)
setInt(?的位置,)
setDate(?的位置,)
psmt.setString(1, "李四");
psmt.setString(2, "1999-9-7");

4. 执行sql

psmt.executeUpdate();

注意: ?能够占位的只有值, 不能是表名、列名、关键字

【3】SQL注入攻击

create table user (
    username varchar(20) primary key,
    password varchar(20)
);
insert into user(username, password) values('zhangsan','123');

防范方法

  1. 对参数内存做检查,内部不能有sql关键字例如:or
  2. PreparedStatement

猜你喜欢

转载自blog.csdn.net/lr1916417519/article/details/85237686