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比较复杂,下面是mysql的url:
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();