JDBC:JAVA DATA BASE CONNECTIVITY
1、SQL语言:
(1) 数据定义语言:create、alter、drop
(2) 数据操纵语言:select、insert、update、delete
① select:select“字段”from“表名”where“条件” order by“字段名”
② insert:insert into 表名[(字段1,字段2···)] values(属性值1,属性值2···)
③ update:update“表名”set“字段”=“新字段”where“条件表达式”
④ delete:delete from 表名 where 条件表达式
(3) 数据控制语言:grant、revoke
(4) 事务控制语言:commit、rollback
2、JDBC-ODBC桥:
(1) JDBC-ODBC桥:JDBC-ODBC桥是一个JDBC驱动程序,完成了从JDBC操作到ODBC操作之间的转换工作,允许JDBC驱动程序被用作ODBC的驱动程序。ODBC:开放数据链接,是为了异构数据库的数据共享而生。使用JDBC-ODBC桥连接数据库的步骤如下:
① 首先加载JDBC-ODBC桥的驱动程序:Class.forName(“sun.jdbC.odbc.Jdbc.OdbcDriver”);
② 使用java.sql包中的Connection接口,并通过DriverManager类的静态方法getConnection()创建连接对象:Connection conn=DriverManager.getConnection(“jdbc:odbc:数据源名字”,“user name”,“password”);
③ 向数据库发送SQL语句。使用Statement接口声明一个SQL语句对象,通过刚才创建的conn的creatStatement()方法创建SQL对象:Statement Sql=conn.creatStatement();JDBC-ODBC桥作为连接数据库的过度技术,现在使用较少,使用较多的是JDBC技术,但是这并不表示JDBC-ODBC技术已经被淘汰,它可以访问几乎所有的数据库。
3、JDBC是一套面向对象的应用程序接口,指定了统一的访问各种关系型数据库的标准。但是sql语句是关系型语句,所以使用JDBC连接数据库实质上也是面向关系的。JDBC的主要任务:与数据库建立连接发送sql返回结果。
4、JDBC中常用的类和接口
(1) Connection接口
Connection接口代表特定的数据库的连接,在连接上下文中执行SQL语句并返回结果。
(2)Statement接口
Statement接口用于在已经建立连接的基础上向数据库发送SQL语句,在JDBC中有三种Statement、PerparedStatement、callabLeStatement。Statement用于执行不带参数的简单的SQL语句;PerparedStatement用于执行动态的SQL语句;callabLeStatement继承了PreparedStatement,用于执行对数据库存储过程的调用。
DriverManager类用来管理数据库中的所有驱动程序。它是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立连接。
ResultSet接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。
数据库操作
连接数据库,有三个步骤:
1、使用Class.forName();获得驱动器
2、使用DriverManager.getConnection通过访问数据库的URL获取数据库连接对象
3、创建本类对象调用getConnection方法。
向数据库发送sql语句,两个步骤:
1、声明一个Statement:
Statement statement=con.createStatement();
2、使用statement的execute方法.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 实现给表中添加数据
*/
public class SQLTest {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/kk_1","root",
"MySQL1998");
Statement statement=conn.createStatement();
String str="insert into k_table(username,pwd,regtime) values ('赵大帅',7454,now())";
//statement.execute(str);
//测试SQL注入
//String id=5+"";//目的是将5转化成字符串
//SQL注入是指在拼接字符串的时候可能会有而已代码,比如String id="5 or 1=1"那么str就变成了delete from
// k_table where id=5 or 1=1,这就是发生了SQL注入。
String str2="delete from k_table where id=1";
//statement.execute(str2);
System.out.println("OK");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}