JAVA JDBC

来源:互联网 发布:c语言全排列递归算法 编辑:程序博客网 时间:2024/05/16 12:32

 

简介:

     JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口(Hibernate,Mybatis等ORM框架),使数据库开发人员能够编写数据库应用程序。

 

标准组件

Connection:链接(会话)对象。

DriverManager:驱动程序管理对象,用来创建会话。

Statement:SQL语句执行对象。

PreparedStatement:动态SQL语句执行对象。

CallableStatement:事务执行对象。

 

示例代码

import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/**   JDBC API */public class DataBase {String driverName = "com.mysql.jdbc.Driver";String url = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8";String userName = "root";String pwd = "root";public Connection getConnection(){/*加载驱动程序*/try {Class.forName(driverName);} catch (ClassNotFoundException e) {System.out.println("加载驱动程序错误!");} Connection connection;/* 创建链接  */try {connection = DriverManager.getConnection(url,userName,pwd);} catch (Exception e) {connection = null;System.out.println("创建链接错误!");}return connection;}public void createTable(){Connection connection = getConnection();try {/* SQL语句执行对象*/Statement statement;String createTable;statement = connection.createStatement();createTable = "CREATE TABLE USER(id BIGINT NOT NULL ,NAME TEXT,PRIMARY KEY (id))";statement.executeUpdate(createTable);} catch (SQLException e) {System.out.println("执行SQL错误!");}}public void inserTableData(){Connection connection = getConnection();try {/* 动态SQL语句执行对象*/PreparedStatement statement;String insertTable;insertTable = "INSERT INTO USER(id,NAME)VALUES(?,?)";statement = connection.prepareStatement(insertTable);/* 参数下标从1开始 */statement.setInt(1, 1);statement.setString(2, "李连杰");statement.executeUpdate();} catch (SQLException e) {e.printStackTrace();System.out.println("执行SQL错误!");}}public void findTableData(){Connection connection = getConnection();try {/* SQL语句执行对象*/Statement statement;String findTableData;statement = connection.createStatement();findTableData = "SELECT id,NAME FROM USER";ResultSet resultSet = statement.executeQuery(findTableData);/*遍历ResultSet*/while (resultSet.next()==true) {/* 取值支持下标和列名两种方式,下标从1开始 */int id = resultSet.getInt(1);String name = resultSet.getString("NAME");System.out.println("id:"+id+" name:"+name);}} catch (SQLException e) {e.printStackTrace();System.out.println("执行SQL错误!");}}public void updateResultSet(){Connection connection = getConnection();try {/* SQL语句执行对象*/Statement statement;String findTableData;/* * ResultSet对象:默认的 不可更新,仅有一个向前移动的指针。因此,只能迭代它一次, 并且只能按从第一行到 * 最后一行的顺序进行。通过在创建是指定类型参数可以生成可滚动和可更新的 ResultSet对象。 */statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);findTableData = "SELECT id,NAME FROM USER";/*修改结果集*/ResultSet resultSet = statement.executeQuery(findTableData);resultSet.absolute(1);resultSet.updateString(2, "成龙");resultSet.updateRow();/*删除结果集*/resultSet.deleteRow();} catch (SQLException e) {e.printStackTrace();System.out.println("执行SQL错误!");}}public void transaction(){Connection connection = getConnection();try {/*设置自动提交:false关闭自动提交,true开启自动提交,设置为false相当于开始事务*/connection.setAutoCommit(false);/*JDBC根据数据库提供的默认值来设置事务支持及其加锁TRANSACTION_NONE:是Oracle中数据库驱动对事务处理的默认值,即不支持事务操作,所以需要在程序中手动进行设置。TRANSACTION_READ_UNCOMMITTED:适用于只涉及到数据库的查询操作;TRANSACTION_READ_COMMITTED:适用于数据查询远多于更新的操作;TRANSACTION_REPEATABLE_READ:适用于更新操作较多;TRANSACTION_SERIALIZABLE:适用于数据一致性要求更高的场合,由于涉及到表加锁,因此会对程序运行效率产生较大的影响。*/connection.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);/*提交事务*/connection.commit();} catch (SQLException e) {System.out.println("交事务失败!");try {connection.rollback();} catch (SQLException e1) {System.out.println("关闭事务失败!");}}}public void findStoredProcedure(){//Connection connection = getConnection();//try {///* 存储过程执行对象  *///CallableStatement prepareCall = connection.prepareCall("{call findUser}");//} catch (SQLException e) {//System.out.println("执行存储过程错误!");//}}public static void main(String[] args) {DataBase dataBase = new DataBase();//dataBase.createTable();//dataBase.inserTableData();//dataBase.findTableData();//dataBase.updateResultSet();dataBase.transaction();}

 

 借鉴博文:百度百科博文一、博文二

0 0
原创粉丝点击