JDBC学习笔记

一、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,表示有多少条数据受到了影响。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
一、概述: JDBC从物理结构上说就是Java语言访问数据库的一套接口集合。从本质上来说就是调用者(程序员)和实现者(数据库厂商)之间的协议。JDBC的实现由数据库厂商以驱动程序的形式提供。JDBC API 使得开发人员可以使用纯Java的方式来连接数据库,并进行操作。 ODBC:基于C语言的数据库访问接口。 JDBC也就是Java版的ODBC。 JDBC的特性:高度的一致性、简单性(常用的接口只有4、5个)。 1.在JDBC中包括了两个包:java.sql和javax.sql。 ① java.sql 基本功能。这个包中的类和接口主要针对基本的数据库编程服务,如生成连接、执行语句以及准备语句和运行批处理查询等。同时也有一些高级的处理,比如批处理更新、事务隔离和可滚动结果集等。 ② javax.sql 扩展功能。它主要为数据库方面的高级操作提供了接口和类。如为连接管理、分布式事务和旧有的连接提供了更好的抽象,它引入了容器管理的连接池、分布式事务和行集等。 注:除了标出的Class,其它均为接口。 API 说明 java.sql.Connection 与特定数据库的连接(会话)。能够通过getMetaData方法获得数据库提供的信息、所支持的SQL语法、存储过程和此连接的功能等信息。代表了数据库java.sql.Driver 每个驱动程序类必需实现的接口,同时,每个数据库驱动程序都应该提供一个实现Driver接口的类。 java.sql.DriverManager (Class) 管理一组JDBC驱动程序的基本服务。作为初始化的一部分,此接口会尝试加载在”jdbc.drivers”系统属性中引用的驱动程序。只是一个辅助类,是工具。 java.sql.Statement 用于执行静态SQL语句并返回其生成结果的对象。 java.sql.PreparedStatement 继承Statement接口,表示预编译的SQL语句的对象,SQL语句被预编译并且存储在PreparedStatement对象中。然后可以使用此对象高效地多次执行该语句。 java.sql.CallableStatement 用来访问数据库中的存储过程。它提供了一些方法来指定语句所使用的输入/输出参数。 java.sql.ResultSet 指的是查询返回的数据库结果集。 java.sql.ResultSetMetaData 可用于获取关于ResultSet对象中列的类型和属性信息的对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mingshengda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值