- 先介绍下连接数据库的几个步骤:
- 步骤一:根据应用程序所用的的数据库,选择JDBC的驱动程序类型。
- 步骤二:连接到数据库,得到Connection对象。
- Connection对象创建Statement对象。
- Statement对象提交SQL语句。
- 步骤五:操作结果集。
- 步骤六:回收数据库资源。
- 1.加载JDBC驱动程序: 通过java.lang.Class类的静态方法forName(String className)实现。 Class.forName(com.mysql.jdbc.Driver);(异常自动添加或异常抛出都ok)
- 成功加载后,会将Driver类的实例注册到DriverManager类中
- 2.提供JDBC连接的URL:
- 连接的URL定义了连接数据时的协议,子协议,数据源标识。
- 书写形式:协议:子协议:数据源标识。
- 协议:在JDBC中总是以jbbc开始
- 子协议:是桥连接的驱动程序或是数据库管理系统名称
- 数据源标识:标记找到数据库来源的地址与连接端口。
- 例如:(MySql的连接URL)(?问号后面是传的参数)
- jdbc:mysql:
- //localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
- useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
- gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
3.创建数据库连接。
- 连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库连接。
- 使用DriverManager的getConnection(String url,String username,String password)方法传入指定想要连接的数据库的路径,数据库的用户名
- 和密码来获的。
DriverManager.getConnection(jdbc:mysql://localhost:3306/test, root, 123) ;
4创建一个Statement
要执行Sql语句,必须获得java.aql.Statement实例,
PreparedStatement pstmt = con.prepareStatement(sql) ; - 5.执行SQL语句。
- Statement接口提供了3种执行sql语句的方法:executeQuery ,executeUpdate , execute 。
- 1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句
- ,返回一个结果集(ResultSet)对象。
- 2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或
- DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
- 3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的
- 语句。
- 具体实现的代码:
- "SELECT * FROM ...") ;
- int rows = stmt.executeUpdate("INSERT INTO ...") ;
- boolean flag = stmt.execute(String sql) ;
6处理结果集:(两种情况)
1执行更新返回的是本次操作影响到的记录数。
ResultSet对象
- • ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些
- 行中数据的访问。
- • 使用结果集(ResultSet)对象的访问方法获取数据:
- while(rs.next()){
- "name") ;
- 1) ; // 此方法比较高效
- }
- 1开始)
7关闭JDBC对象:
- 操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声
- 明顺序相反:
- 1、关闭记录集
- 2、关闭声明
- 3、关闭连接对象
• if(rs != null){ // 关闭记录集
• try{
• rs.close() ;
• }catch(SQLException e){
• e.printStackTrace() ;
• }
• }
• if(stmt != null){ // 关闭声明
• try{
• stmt.close() ;
• }catch(SQLException e){
• e.printStackTrace() ;
• }
• }
• if(conn != null){ // 关闭连接对象
• try{
• conn.close() ;
}catch(SQLException e){ e.printStackTrace() ; } }
•
• 操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声
• 明顺序相反:
• 1、关闭记录集
• 2、关闭声明
• 3、关闭连接对象
• if(rs != null){ // 关闭记录集
• try{
• rs.close() ;
• }catch(SQLException e){
• e.printStackTrace() ;
• }
• }
• if(stmt != null){ // 关闭声明
• try{
• stmt.close() ;
• }catch(SQLException e){
• e.printStackTrace() ;
• }
• }
• if(conn != null){ // 关闭连接对象
• try{
• conn.close() ;
}catch(SQLException e){ e.printStackTrace() ; } }