一、JDBC是什么
Java DataBase Connectivity(Java语言连接数据库)。
JDBC的本质:JDBC是SUN公司制定的一套接口(interface)。
接口都有调用者和实现者。
面向接口调用,面向接口写实现类,都属于面向接口编程。
多态机制就是非常典型的:面向抽象编程。(不要面向具体编程)。
建议:
Animal a = new Cat();
Animal a = new Dog();
public void feed (Animal a){//面向父类型编程
}
不建议:
Dog d = new Dog();
Cat c =new Cat();
制定一套JDBC接口的原因:因为每一个数据库的底层实现原理都不一样。
二、JDBC编程步骤
1.注册驱动(作用:告诉java程序,即将要连接的是哪个品牌的数据库)
2.获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,使用之后一定要关闭通道)
3.获取数据库操作对象(专门执行sql语句的对象)
4.执行SQL语句(DQL,DML)
5.处理查询结果集(只有当第四步执行的是select语句的时候,才有第五步)
6.释放资源(使用完资源之后一定要关闭资源,Java和数据库属于进程之间的进程,开启之后一定要关闭)
三、演示
import java.sql.Statement;
public class JDBC01{
public static void main (String [] args){
try{
// 1.注册驱动
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());注册驱动第一种写法
Class.forName("com.mysql.jdbc.Driver");//注册驱动第二种写法,常用。
//2.获取连接
String url ="jdbc:mysql://ip:port/name";//url:统一资源定位符。包括:协议,IP,端口名,port
String user = "root";
String password = " xxx";
Connection conn = DriverManager.getConnection(url,uesr,password);
System.out.printIn("数据库连接对象=" +conn);
//3.获取数据库操作对象
Statement stmt = conn.createStatement();
//4.执行SQL语句
String sql = “select empno,ename,sal from emp”;
rs = stmt.executeQuert(sql);//专门执行DQL语句的方法。
//5.处理查询结果集
boolean flag1 = rs.next();
if(flag1){
//光标指向的行有数据
//取数据
//getString()方法的特点是,不管数据库种的数据类型是什么,都以String的形式取出。
String empno = rs.getString(1);
String ename = rs.getString(2);
String sal = rs.getString(3);
System.out.printIn(empno+"," +ename +"," +sal);
}
}catch (SQLExeption e){
e.printStackTrace();
}finally{
//6.释放资源
//为了保证资源一定释放,在finally语句块种关闭资源,并且要遵循从小到大依次关闭,分别对齐try....catch
try{
if(rs != null){
rs.close();
}
}catch(SQLExeption e){
e.printStackTrace();
}
try{
if(conn != null){
conn.close();
}
}catch(SQLExeption e){
e.printStackTrace();
}
}
}
}
四、额外知识
Statement和PreparedStatement的异同及优缺点
同:两者都是用来执SQL语句的
异:PreparedStatement需要根据SQL语句来创建,它能够通过设置参数,指定相应的值,不是像Statement那样使用字符串拼接的方式。
PreparedStatement的优点:
1、其使用参数设置,可读性好,不易记错。在statement中使用字符串拼接,可读性和维护性比较差。
2、其具有预编译机制,性能比statement更快。
3、其能够有效防止SQL注入攻击。
PreparedStatement的原理:预先对SQL语句的框架进行编译,然后再给SQL语句传“值”。是属于预编译的数据库操作对象。
execute和executeUpdate的区别
相同点:二者都能够执行增加、删除、修改等操作。
不同点:
1、execute可以执行查询语句,然后通过getResult把结果取出来。executeUpdate不能执行查询语句。
2、execute返回Boolean类型,true表示执行的是查询语句,false表示执行的insert、delete、update等。executeUpdate的返回值是int,表示有多少条数据受到了影响。