JDBC-java访问数据库

定义:JDBC是一个独立于数据库管理系统的,通用的SQL数据库存取和操作的公共接口

    (由JAVA类和接口组成,接口由各数据库厂家负责实现)

使用方法:

1、加载驱动  Class.forName(“数据库驱动全类名”)

Class.forName("oracle.jdbc.driver.OracleDriver");  Oracle加载驱动写法

2、获取连接  DriverManager.getConnection(连接数据库的URL,数据库账号,数据库密码)

例:(链接本机数据库)

Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "账号", "密码");

(连接数据库的URL为  jdbc:oracle:thin:@地址:1521:数据库名)

(都会返回  Connection)

DatabaseMetaData a = conn.getMetaData()  数据库源数据

   getMetaData()  返回数据库源数据

3、获取操作声明  

Statement a = conn.createStatement();

a.executeUpdate(“增删改语句”)  (添加和修改时返回的是受影响的记录条数)

a.executeQuery(“查询语句”)  (返回 ResultSet 结果集)

PreparedStatement   执行编译语句的操作声明

特点  是Statement的子类,执行效率高,防止SQL注入

用法  connection 对象.prepareStatement(sql语句)   sql语句可以用问号作为占位符

    替换占位符   setXXX(占位符序号,替换的内容)  根据XXX的数据类型和占位符序号进行内容替换(占位符序号从1开始)

CallableStatement  执行存储过程的操作声明

是PreparedStatement的子接口

4、处理结果集

ResultSet a = b.executeQuery(“查询语句”);

遍历

while(a.next()){

String sno = a.getString("sno");
String cno = a.getString("cno");
String degree = a.getString("degree");
System.out.println(cno+" "+cno+" "+degree);
}

ResultSetMetaData a = b.getMetaData()  返回结果集的源数据

next()  判断并返回是否存在下一行,如果存在就跳转到下一行

getXXXX(字段序号或字段名称)  根据字段序号或字段名称返回XXXX类型的字段数据

frist()  跳转到首行

last()  跳转到尾行

getRow()  获取当前行号

5、事务  数据库中构成单个逻辑工作单元的操作集合

特性ACID  A原子性

       C一致性

       I隔离性

       D制约性

实现  connection对象.setAutoCommit(false)  关闭自动提交

    connection对象.commit()  操作数据之后进行提交

    connection对象.rollback()  如果有数据异常就回滚

6、数据库连接池  负责分配、管理和释放数据库连接

           允许应用程序使用现有的连接

  ComboPooledDataSource 数据源  构造方法  ComboPooledDataSource()

                          ComboPooledDataSource(“配置名称”)  通过配置文件配置项构建数据源的实例

                                                c3p0-config.xml

  方法  setDriverClass  设置驱动类

      setJdbcUrl  设置数据库地址

      setUser  设置用户

      setPassword  设置密码

      setMinPoolSize  设置链接最小数量

      setMaxPoolSize  设置链接最大数量

      setInitialPoolSize  设置初始连接数量

      getConnection  获取链接对象

  用法  可以使用单例模式,在整个系统使用一个连接池 

7、实体类

      

原文地址:https://www.cnblogs.com/jingfengling/p/5977862.html