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
经常使用方法:url
3)Statement接口:
用于执行静态SQL语句并返回它所生成结果的对象。spa
三种Statement类:code
经常使用Statement方法:对象
4)ResultSet接口:
执行sql查询语句返回的结果集。
ResultSet提供检索不一样类型字段的方法:
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(); }}}