什么是JDBC:
JDBC(Java DataBase Connectivity)就是Java数据库链接,简单说就是用Java语言来操做数据库。原来咱们操做数据库是在控制台使用SQL语句来操做数据库,JDBC是用Java语言向数据库发送SQL语句。java
特色:mysql
1)跨平台运行:这是继承了Java语言的“一次编译,处处运行”的特色;sql
2)不受数据库供应商的限制:巧妙在于JDBC设有两种接口,一个是面向应用程序层,其做用是使得开发人员经过SQL调用数据库和处理结果,而不须要考虑数据库的提供商;另外一个是驱动程序层,处理与具体驱动程序的交互;数据库
经常使用接口:
1)Driver接口: Driver接口由数据库厂家提供,做为java开发人员,只须要使用Driver接口就能够了。编程
2)Connection接口: Connection与特定数据库的链接(会话),在链接上下文中执行sql语句并返回结果。oracle
经常使用方法:学习
- createStatement():建立向数据库发送sql的statement对象。
- prepareStatement(sql) :建立向数据库发送预编译sql的PrepareSatement对象。
- prepareCall(sql):建立执行存储过程的callableStatement对象。
- setAutoCommit(boolean autoCommit):设置事务是否自动提交。
- commit() :在连接上提交事务。
- rollback() :在此连接上回滚事务。
3)Statement接口: 用于执行静态SQL语句并返回它所生成结果的对象。url
三种Statement类:3d
- Statement:由createStatement建立,用于发送简单的SQL语句(不带参数)。
- PreparedStatement :继承自Statement接口,由preparedStatement建立,用于发送含有一个或多个参数的SQL语句。
- CallableStatement:继承自PreparedStatement接口,由方法prepareCall建立,用于调用存储过程。
经常使用Statement方法:code
- execute(String sql):运行语句,返回是否有结果集
- executeQuery(String sql):运行select语句,执行查询操做,返回ResultSet结果集。
- executeUpdate(String sql):运行insert/update/delete语句,执行更新操做。
- addBatch(String sql) :把多条sql语句放到一个批处理中。
- executeBatch():向数据库发送一批sql语句执行。
4)ResultSet接口: 执行sql查询语句返回的结果集。
ResultSet提供检索不一样类型字段的方法:
- getString(int index)、getString(String columnName):得到在数据库里是varchar、char等类型的数据对象。
- getFloat(int index)、getFloat(String columnName):得到在数据库里是Float类型的数据对象。
- getDate(int index)、getDate(String columnName):得到在数据库里是Date类型的数据。
- getBoolean(int index)、getBoolean(String columnName):得到在数据库里是Boolean类型的数据。
- getObject(int index)、getObject(String columnName):获取在数据库里任意类型的数据。
ResultSet对结果集进行滚动的方法:
- next():移动到下一行;
- Previous():移动到前一行;
- absolute(int row):移动到指定行;
- beforeFirst():移动resultSet的最前面;
- afterLast() :移动到resultSet的最后面;
【使用后依次关闭对象及链接:ResultSet → Statement → Connection】
编程步骤:
1)加载驱动程序;
Class.forName(driverClass) //加载MySql驱动 Class.forName("com.mysql.jdbc.Driver") //加载Oracle驱动 Class.forName("oracle.jdbc.driver.OracleDriver")
2)获取数据链接:经过DriverManager类建立数据库链接对象Connection;
Connection conn = DriverManager.getConnection(url, user,password);
3)建立Statement对象:
Statement stmt = conn.createStatement();
4)调用Statement对象的相关方法执行相对应的 SQL 语句:经过execuUpdate()方法用来数据的更新,包括插入和删除等操做;
5)关闭数据库链接:使用完数据库或者不须要访问数据库时,经过Connection的close() 方法及时关闭数据链接;
例:
获取链接数据库资源
private static ResourceBundle bundle= ResourceBundle.getBundle("connect");//资源包 private static String driver= bundle.getString("driver");//驱动程序 private static String url=bundle.getString("url"); //数据库链接地址 private static String user=bundle.getString("user");//用户名称 private static String password=bundle.getString("password");//用户密码</pre>
建立链接
public Connection getConn() { try { Class.forName(driver);//加载驱动 Connection conn; conn=DriverManager.getConnection(url, user, password);//建立链接 return conn; } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return null; }
执行方法
public void Update(String sql, ArrayList<String> parameters) { Connection connection = getConn();//获取链接 PreparedStatement ps = null;//初始化陈述清单 try { connection.setAutoCommit(false);// 更改JDBC事务的默认提交方式,默认是true,是自动提交; ps = connection.prepareStatement(sql);//设置sql语句 for (int i = 0; i < parameters.size(); i++) { ps.setString(i + 1, parameters.get(i));//设置参数 } ps.executeUpdate(); connection.commit();//提交JDBC事务,若是没问题,这时才真正的删除了; connection.setAutoCommit(true);// 恢复JDBC事务的默认提交方式; } catch (SQLException e) { try { //回滚JDBC事务,出现异常,为保证数据完整性,这次操做回滚,不删除; connection.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace(); }finally{ try { //关闭资源 ps.close();connection.close(); } catch (SQLException e) {e.printStackTrace(); }}}
结语:谢谢你们阅读,想要免费获取更多java基础知识宝典,能够戳我一块儿交流学习!