JDBC定义:
JDBC全称: Java Data Base Connectivity(数据库连接): 独立于特定数据管理系统, 通用的sql数据库存取和操作的公共接口, 是一种面向接口编程
JDBC为访问不同的数据库提供了不同的途径,提供了统一的访问.
java应用-jdbc-oracle/mysql/sql server
ojdbc6.jar是JDBC连接数据库所必需的一个驱动包, 这个驱动包里面的某些特定的方法实现了下面三个接口, 从而可以连接到数据库
我们把这种可以实现这三个接口的jar称为数据库的驱动包
Connection接口是jdk中定义好的一个数据库连接的接口, 在javaAPI当中没有定义任何实现该接口的实现类, 这些实现类将会由数据库厂商提供, 同样Statement, ResultSet这两个接口都是以这种形式来定义, 这样的编程模式成为面向接口编程
加载驱动程序:class.forname(driveClass) 加载mysql驱动:Class.forName("com.mysql.jdbc.Driver"); 加载Oracle驱动:Class.forName("oracle.jdbc.driver.OracleDriver");//"oracle.jdbc.OracleDriver" 获得数据库连接: DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc","root","root");
//"jdbc:oracle:thin:@localhost:1521:orcl" 创建Statement对象:conn.creatStatement();
//定义常量 常量全部大写 private static final String USERNAME = "test"; 1 private static final String PASSWORD = "test"; 2 private static final String URL 3 = "jdbc:oracle:thin:@localhost:1521:orcl"; private static final String DRIVERCLASSNAME //数据库的驱动程序 4 = "oracle.jdbc.OracleDriver"; public static Connection getConnection() { //方法定义成静态的,可以通过类名直接点出来 Connection conn = null; try { //1.加载驱动程序 Class.forName(DRIVERCLASSNAME); //2.获取数据库的连接 conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); //3.通过数据库的连接操作数据库,实现增删改查 statemet stmt = conn.createStatement();//实例化 ResultSet rs = stmt.executeQuery("select * from **biao "); //我们查询的数据就会存在这个rs中了.会返回一个结果集,这个结果集引入时是sql下的, //不要写错了,接下来怎么调用里面的东西呢? while(rs.next())//是说是否有下一个,有返回true,没有返回false //意思是说,里面如果有数据,就会打印出来,没有这个循环就不会走 {//我们用while把结果循环循环打印出来 syso(rs.getString("")+","+rs.getInt("")); //rs提供了想打印哪种数据类型就打印哪种的方法用get..如上 } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; }
MVC三层架构: View 视图层 Control 控制层 Model模型层 和 DB 数据库
JDBC主要使用的一个类和三个接口:
DriverManager:
驱动程序管理类, 由这个类来获取Connection接口的实例
Connection: 获取数据库的连接, 设置自动提交方式, 获取Statement(包括其子类)对象
prepareStatement(sql)-->返回用于执行sql语句的一个对象
callableStatement-->返回执行存储过程的一个对象
setAutoCommit(true)-->设置数据库提交方式(自动 / 手动)
Statement: 执行sql语句, 返回结果集
返回boolean类型 prepareStatement.execute()-->用于执行存储过程和函数
返回ResultSet prepareStatement.executeQuery()-->用于查询的语句
返回int prepareStatement.executeUpdate()-->用于增, 删, 改的语句
批量处理:
prepareStatement.addBatch()-->每次处理一条sql语句
返回int[] prepareStatement.executeBatch()-->将一批命令提交给数据库去执行
以占位符的形式构建sql语句
String sql = "select * from tablename t where t.id=? and t.name in (?,?,?)";
prepareStatemenet.setInt(1, 24)
prepareStatemenet.setString(2, "Tom");
prepareStatemenet.setString(3, "Jack");
prepareStatemenet.setString(4, "Kitty");
prepareStatemenet.executeQuery();
调用设置占位符参数方法, 需要传两个参数:
第一个参数: 占位符索引值, 第几个 ? , 就写几, 从1开始数
第二个参数: 占位符的值, 设置什么类型的参数, 就用什么类型的方法
ResultSet:
由Statement执行查询sql之后返回的结果集
返回boolean类型 next()-->判断结果集是否有下一行数据
获取数据
resultSet.getString()--->方法可以传字符串, 表示表中字段的名字, 也可以传整数, 表示第几列
resultSet.getInt()
resultSet.getDate()
...
通过对各种方法的重写来获取结果集中的数据
java连接数据库的代码
定义四个属性: username, password, url, driver
不用记住, 知道写什么东西并且在哪能找到就行
1, 类加载器去加载数据库的驱动程序
Class.forName(dirver);
2, 直接调用DriverManager的静态方法getConnection()获取连接
Connection conn = DriverManager.getConnection(url, username, password);