Java-JDBC(1)

一,

1.jdbc概述:jdbc是一种用来执行sql语句的java api,可以为多种关系数据库提供同意访问,是由一组用Java代码写的类和接口组成,是java访问数据库的标准规范

2.jdbc原理:Java提供访问数据库孤帆称为jdbc,而生产厂商提供方规范的实现类成为驱动

jdbc是接口,驱动是接口的实现,没有驱动将无法完成数据库连接,从而不能操作数据库

3.jdbc开发步骤:

(1),注册驱动:告知jvm使用的是哪一个数据库的驱动

(2),获得链接:使用JDBC中的类,完成对MySQL数据库的连接

(3),获得语句执行平台:通过连接对象获取对SQL语句的执行者对象

(4),执行sql语句:使用执行者对象,向数据库执行SQL语句,获得到数据库的执行后的结果

(5),处理结果

(6),释放资源

4.导入驱动jar包

创建lib目录,用于存放当前项目需要的所有jar包,选择jar包,右键执行build path / Add to Build Path

5.注册驱动:

代码:Class.forName("com.mysql.jdbc.Driver");

jdbc规范定义驱动接口:java.sql.Driver,mysql驱动包提供了实现类:com.mysql.jdbc.Driver DriverManager工具类,提供注册驱动的方法registerDriver(),方法的参数是java.sql.Driver,所以可以通过下面的代码进行注册:

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

但是由于上面的代码存在:硬编码,后期不宜与程序扩展维护和驱动被注册两次的不足,所以不推荐使用

通常开发使用Class.forName()加载一个使用字符串描述的驱动类,如果使用Class.forName()将类加载到内存,该类的静态代码将自动执行,通过查询com.mysql.jdbc.Driver源码,我们发现Driver类主动将自己注册

public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    static {
        try {
            java.sql.DriverManager.registerDriver(new Driver());
        } catch (SQLException E) {
            throw new RuntimeException("Can't register driver!");
        }
    }
……
}

6.获得连接:

Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb”,”root”,”root”);

获取连接需要方法 DriverManager.getConnection(url,username,password),三个参数分别表示,url 需要连接数据库的位置(网址) user用户名  password 密码

 

url比较复杂,下面是mysqlurl

jdbc:mysql://localhost:3306/mydb
JDBC规定url的格式由三部分组成,每个部分中间使用冒号分隔。
   第一部分是jdbc,这是固定的;
   第二部分是数据库名称,那么连接mysql数据库,第二部分当然是mysql了;
   第三部分是由数据库厂商规定的,我们需要了解每个数据库厂商的要求,mysql的第三部分
分别由数据库服务器的IP地址(localhost)、端口号(
3306),以及DATABASE名称(mydb)组成。

7.获得语句执行平台:

String sql = "某SQL语句";
获取Statement语句执行平台:Statement stmt = con.createStatement();

常用方法:

1.int executeUpdate(String sql); --执行insert update delete语句.
2.ResultSet executeQuery(String sql); --执行select语句.
3.boolean execute(String sql); --执行select返回true 执行其他的语句返回false.

8.处理结果集(执行insert,update,delete无需处理)

ResultSet实际上就是一张二维的表格,我们可以调用其boolean next()方法指向某行记录,当第一次调用next()方法时,便指向第一行记录的位置,这时就可以使用ResultSet提供的getXXX(int col)方法(与索引从0开始不同个,列从1开始)来获取指定列的数据:

 

rs.next();//指向第一行
rs.getInt(1);//获取第一行第一列的数据

 

常用方法:

1.Object getObject(int index) / Object getObject(String name) 获得任意对象
2.String getString(int index) / Object getObject(String name) 获得字符串
3.int getInt(int index) / Object getObject(String name) 获得整形
4.double getDouble(int index) / Object getObject(String name) 获得双精度浮点型

9.释放资源:

rs.close();
stmt.close();
con.close();
posted @ 2018-11-16 11:21  井盖同学  阅读(133)  评论(0编辑  收藏  举报