0808-JDBC-Java DataBase Connectivity
2017-08-19 16:35
459 查看
JDBC中常用的接口---java.sql包
----------------------------
(1)Connection接口---代表程序和数据库间的连接
(2)Statement接口---代表程序发往数据库的SQL语句
(3)PreparedStatement接口---代表程序发往数据库的SQL语句,性能比Statement更优
(4)ResultSet接口---代表执行查询语句后返回的结果集
PreparedStatement接口
----------------------------
(1)PreparedStatement接口是Statement的子接口,表示预编译的SQL语句对象;
(2)Statement接口:创建语句对象时,不带参数 --> 执行更新或查询方法时,传入完整的SQL语句
PreparedStatement接口:创建预处理语句对象时,传入带?的SQL语句 --> 执行更新或查询方法时,不带参数
使用PreparedStatement接口完成数据更新操作
----------------------------
//步骤1---通过反射实例化数据库驱动类
//Class.forName("完整的数据库驱动类名");
Class.forName("com.mysql.jdbc.Driver");
//步骤2---调用DriverManager的静态工厂方法获取数据库连接对象
//Connection conn = DriverManager.getConnection("jdbc:mysql://数据库所在的主机名或IP地址:端口号/数据库名", "连接数据库的用户名", "连接数据库的密码");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/news", "root", "1");
//步骤3---准备带?的SQL语句
String sql = "xxx";
//步骤4---调用连接对象的工厂方法创建预处理语句对象,传入sql语句
PreparedStatement pstmt = conn.prepareStatement(sql);
//步骤5---调用预处理语句对象的setXXX()方法为SQL语句中的每个?传参
pstmt.setXXX(参数序号, 参数值);
//步骤6---调用预处理语句对象的更新方法,返回本次更新所影响的记录行数,行数>0---表示更新成功 行数=0---找不到要更新的数据 行数<0---更新失败
int rows = pstmt.executeUpdate();
//步骤7---关闭预处理语句对象和数据库连接对象
pstmt.close();
conn.close();
使用PreparedStatement接口完成数据查询操作
----------------------------
//步骤1---通过反射实例化数据库驱动类
//Class.forName("完整的数据库驱动类名");
Class.forName("com.mysql.jdbc.Driver");
//步骤2---调用DriverManager的静态工厂方法获取数据库连接对象
//Connection conn = DriverManager.getConnection("jdbc:mysql://数据库所在的主机名或IP地址:端口号/数据库名", "连接数据库的用户名", "连接数据库的密码");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/news", "root", "1");
//步骤3---准备带?的SQL语句
String sql = "xxx";
//步骤4---调用连接对象的工厂方法创建预处理语句对象,传入sql语句
PreparedStatement pstmt = conn.prepareStatement(sql);
//步骤5---调用预处理语句对象的setXXX()方法为SQL语句中的每个?传参
pstmt.setXXX(参数序号, 参数值);
//步骤6---调用预处理语句对象的查询方法,返回结果集对象
ResultSet rs = pstmt.executeQuery();
//步骤7---使用while循环遍历结果集,调用next()方法将指针移动到下一条记录
while(rs.next()){
//步骤8---使用结果集对象的getXXX()方法获取当前记录中不同数据类型的字段值
}
//步骤9---关闭结果集对象,预处理语句对象,数据库连接对象
rs.close();
pstmt.close();
conn.close();
使用PreparedStatement接口
----------------------------
(1)Connection接口---代表程序和数据库间的连接
(2)Statement接口---代表程序发往数据库的SQL语句
(3)PreparedStatement接口---代表程序发往数据库的SQL语句,性能比Statement更优
(4)ResultSet接口---代表执行查询语句后返回的结果集
PreparedStatement接口
----------------------------
(1)PreparedStatement接口是Statement的子接口,表示预编译的SQL语句对象;
(2)Statement接口:创建语句对象时,不带参数 --> 执行更新或查询方法时,传入完整的SQL语句
PreparedStatement接口:创建预处理语句对象时,传入带?的SQL语句 --> 执行更新或查询方法时,不带参数
使用PreparedStatement接口完成数据更新操作
----------------------------
//步骤1---通过反射实例化数据库驱动类
//Class.forName("完整的数据库驱动类名");
Class.forName("com.mysql.jdbc.Driver");
//步骤2---调用DriverManager的静态工厂方法获取数据库连接对象
//Connection conn = DriverManager.getConnection("jdbc:mysql://数据库所在的主机名或IP地址:端口号/数据库名", "连接数据库的用户名", "连接数据库的密码");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/news", "root", "1");
//步骤3---准备带?的SQL语句
String sql = "xxx";
//步骤4---调用连接对象的工厂方法创建预处理语句对象,传入sql语句
PreparedStatement pstmt = conn.prepareStatement(sql);
//步骤5---调用预处理语句对象的setXXX()方法为SQL语句中的每个?传参
pstmt.setXXX(参数序号, 参数值);
//步骤6---调用预处理语句对象的更新方法,返回本次更新所影响的记录行数,行数>0---表示更新成功 行数=0---找不到要更新的数据 行数<0---更新失败
int rows = pstmt.executeUpdate();
//步骤7---关闭预处理语句对象和数据库连接对象
pstmt.close();
conn.close();
使用PreparedStatement接口完成数据查询操作
----------------------------
//步骤1---通过反射实例化数据库驱动类
//Class.forName("完整的数据库驱动类名");
Class.forName("com.mysql.jdbc.Driver");
//步骤2---调用DriverManager的静态工厂方法获取数据库连接对象
//Connection conn = DriverManager.getConnection("jdbc:mysql://数据库所在的主机名或IP地址:端口号/数据库名", "连接数据库的用户名", "连接数据库的密码");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/news", "root", "1");
//步骤3---准备带?的SQL语句
String sql = "xxx";
//步骤4---调用连接对象的工厂方法创建预处理语句对象,传入sql语句
PreparedStatement pstmt = conn.prepareStatement(sql);
//步骤5---调用预处理语句对象的setXXX()方法为SQL语句中的每个?传参
pstmt.setXXX(参数序号, 参数值);
//步骤6---调用预处理语句对象的查询方法,返回结果集对象
ResultSet rs = pstmt.executeQuery();
//步骤7---使用while循环遍历结果集,调用next()方法将指针移动到下一条记录
while(rs.next()){
//步骤8---使用结果集对象的getXXX()方法获取当前记录中不同数据类型的字段值
}
//步骤9---关闭结果集对象,预处理语句对象,数据库连接对象
rs.close();
pstmt.close();
conn.close();
使用PreparedStatement接口
package com.uan.util; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; public class JDBCUtil { private Connection conn; private PreparedStatement pstmt; private ResultSet rs; //数据库连接信息 private static String dbDriver = ""; private static String dbUrl = ""; private static String dbUsername = ""; private static String dbPassword = ""; //静态代码块---类加载时读取配置文件的信息 static{ //实例化Properties对象 Properties prop = new Properties(); try { //加载属性文件 prop.load(JDBCUtil.class.getResourceAsStream("db-config.properties")); //读取配置 dbDriver = prop.getProperty("dbDriver"); dbUrl = prop.getProperty("dbUrl"); dbUsername = prop.getProperty("dbUsername"); dbPassword = prop.getProperty("dbPassword"); } catch (IOException e) { e.printStackTrace(); } } //单例 private static JDBCUtil instance = new JDBCUtil(); public static JDBCUtil getInstance(){ return instance; } //加载驱动类 private JDBCUtil(){ try { Class.forName(dbDriver); } catch (ClassNotFoundException e) { e.printStackTrace(); } } //打开连接 private void openConnection(){ try { this.conn = DriverManager.getConnection(dbUrl, dbUsername, dbPassword); } catch (SQLException e) { e.printStackTrace(); } } //数据更新 public int execUpdate(String sql, Object... params){ this.openConnection(); try { this.pstmt = this.conn.prepareStatement(sql); //参数赋值 for(int i=0; i<params.length; i++){ pstmt.setObject(i+1, params[i]); } return pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); return -1; } finally{ this.closeConnection(); } } //数据查询 public ResultSet execQuery(String sql, Object... params){ this.openConnection(); try { this.pstmt = this.conn.prepareStatement(sql); //参数赋值 for(int i=0; i<params.length; i++){ pstmt.setObject(i+1, params[i]); } rs = pstmt.executeQuery(); return rs; } catch (SQLException e) { e.printStackTrace(); return null; } } //关闭连接 public void closeConnection(){ try { if(this.rs!=null){ this.rs.close(); } if(this.pstmt!=null){ this.pstmt.close(); } if(this.conn!=null){ this.conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { JDBCUtil jdbcUtil = new JDBCUtil(); /* String sql = "update user set score = ? where userid = ?"; //int rows = jdbcUtil.execUpdate(sql, new Object[]{40, 4}); int rows = jdbcUtil.execUpdate(sql, 44, 4); if(rows > 0){ System.out.println("更新成功"); }else{ System.out.println("更新失败"); } */ String sql = "select * from user"; ResultSet rs = jdbcUtil.execQuery(sql); try { while(rs.next()){ System.out.println(rs.getInt(1) + "-" + rs.getString(2) + "-" + rs.getString(3) + "-" + rs.getInt(4)); } } catch (SQLException e) { e.printStackTrace(); } finally{ jdbcUtil.closeConnection(); } } }
相关文章推荐
- JDBC(Java Database Connectivity)
- JDBC(Java DataBase Connectivity)连接到MySQL
- JDBC连接数据库(Java DataBase Connectivity,java)
- 关于 Java Database Connectivity 您不知道的 5 件事 提升您和 JDBC API 的关系
- JDBC(Java DataBase Connectivity)入門
- Java数据库连接(Java Database Connectivity,JDBC)
- Java JDBC(Java Database Connectivity)数据库连接规范
- JDBC,java数据库连接java database connectivity
- JDBC (Java DataBase Connectivity) Java连接Oracle数据库
- 01-JDBC概念--JDBC(Java Database Connectivity:Java数据库连接):使用jdbc实现Java与数据库MySQL连接
- JDBC 3: Java Database Connectivity
- Java Database Programming with JDBC
- Jdbc(Java Data Base Connectivity,java数据库连接)
- 关于 Java Database Connectivity 您不知道的 5 件事
- java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys
- JDBC(Java Data Base Connectivity)基本用法
- java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.getJDBCMajorVersion()
- J2EE学习从菜鸟变大鸟之五 JDBC(Java Data Base Connectivity)
- 原来用JAVA操作DATABASE是需要JDBC driver的
- JDBC:Java DataBase Connection