JAVA学习心得--JDBC使用

来源:互联网 发布:无法连接到emule网络 编辑:程序博客网 时间:2024/05/29 08:48
在学习JAVA的过程中,我们可以将其规划为几个阶段慢慢学习,目前我是按照J2EE方向,学习java的体系。 
*第一阶段:Java基础,包括java语法,面向对象特征,常见API,集合框架; 
*第二阶段:java界面编程,包括AWT,事件机制,SWING,这个部分也可以跳过,用的时候再看都能来及; 
*第三阶段:java API:输入输出,多线程,网络编程,反射注解等,java的精华部分; 
*第四阶段:数据库SQL基础,包括增删改查操作以及多表查询; 
*第五阶段:JDBC编程:包括JDBC原理,JDBC连接库,JDBC API,虽然现在Hibernate比JDBC要方便许多,但是JDBC技术仍然在使用,JDBC思想尤为重要; 
下面主要记录一下JDBC连接数据库的七大步骤 

首先介绍一下JDBC的概念和用途 
JDBC概念 
JDBC全称:Java Data Base Connectivity—java数据库连接。 
是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。 
JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。 
简单来说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。 

JDBC连接数据库的七大步骤 
1.加载JDBC驱动程序 
MySql常在中小型项目中作为数据库。下面就以连接MySql为例,在连接之前我们需要先加载数据库的驱动到java虚拟机。 
一般都是通过java.lang.Class类的静态方法forName(String className)实现,其中className则是填写加载的驱动jar包名字。 
例如: 
try{ 
//加载MySql的驱动类 
Class.forName("com.mysql.jdbc.Driver") ; 
}catch(ClassNotFoundException e){ 
System.out.println("找不到驱动程序类 ,加载驱动失败!"); 
e.printStackTrace() ; 

加载 Driver 类后,它们即可用来与数据库建立连接。 

2.提供JDBC连接的URL,DriverManage连接使用 
连接的URL主要由三部分组成,书写形式按照协议:子协议:数据源标识 
协议:在JDBC中总是以jdbc开始 
子协议:是桥连接的驱动程序或是数据库管理系统名称。 
数据源标识:标记找到数据库来源的地址与连接端口。 
例如:(MySql的连接URL) 
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8; 
协议 子协议 数据源标识 
最后申明字符集编码为UTF-8统一转换 

3.创建数据库的连接 
要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象, 
该对象就代表一个数据库的连接。 
使用DriverManager的getConnectin(String url , String username , 
String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。 
例如: 
//连接MySql数据库,用户名和密码都是root 
String url = "jdbc:mysql://localhost:3306/test" ; 
String username = "root" ; 
String password = "root" ; 
try{ 
Connection con = DriverManager.getConnection(url , username , password ) ; 
}catch(SQLException e){ 
System.out.println("数据库连接失败!"); 
e.printStackTrace() ; 


4.创建一个Statement 
要执行SQL语句,必须获得java.sql.Statement实例 
具体可以通过Connection.createStatement()创建一个 Statement 对象来将 SQL 语句发送到数据库。 

5.执行SQL语句 
Statement接口提供了三种执行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):用于执行返回多个结果集、多个更新计数或二者组合的 
语句。 
具体实现的代码: 
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ; 
int rows = stmt.executeUpdate("INSERT INTO ...") ; 
boolean flag = stmt.execute(String sql) ; 

6.处理结果 
两种情况: 
1、执行更新返回的是本次操作影响到的记录数。 
2、执行查询返回的结果是一个ResultSet对象。 
ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些 
行中数据的访问。 
使用结果集(ResultSet)对象的访问方法获取数据: 
while(rs.next()){ 
String name = rs.getString("name") ; 
String pass = rs.getString(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() ; 



下面是我自己测试的时候写的一个简单的查询例子: 
package test; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

public class JDBCtest { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
// TODO Auto-generated method stub 
Connection conn = null; 
Statement stmt = null; 
ResultSet rs = null; 
String url = null; 
String user = null; 
String password = null; 
String sql = null; 
//1.加载JDBC驱动 
try { 
Class.forName("com.mysql.jdbc.Driver"); // 加载mysq驱动 
} catch (ClassNotFoundException e) { 
System.out.println("驱动加载错误"); 
e.printStackTrace();// 打印出错详细信息 

//2.提供JDBC连接的URL 3.创建数据库的连接 
try { 
url = "jdbc:mysql://localhost:3306/test?user=root&password=12345&useUnicode=true&&characterEncoding=UTF-8";// 简单写法:url // "jdbc:myqsl://localhost/test(数据库名)? user=root(用户)&password=yqs2602555(密码)"; 
user = "root"; 
password = "12345"; 
conn = DriverManager.getConnection(url, user, password); 
} catch (SQLException e) { 
System.out.println("数据库链接错误"); 
e.printStackTrace(); 

//4.创建一个Statement 
try { 
stmt = conn.createStatement(); 
sql = "select * from user";// user这张表有userId,userName和password这三个字段 
//5.执行SQL语句 
rs = stmt.executeQuery(sql); 
//6.处理结果 
while (rs.next()) { 
System.out.print(rs.getInt("userId") + " "); 
System.out.print(rs.getString("userName") + " "); 
System.out.print(rs.getString("password") + " "); 
System.out.println(rs.getString("id") + " "); 

} catch (SQLException e) { 
System.out.println("数据操作错误"); 
e.printStackTrace(); 

//7.关闭JDBC对象 
try { 
if (rs != null) { 
rs.close(); 
rs = null; 

if (stmt != null) { 
stmt.close(); 
stmt = null; 

if (conn != null) { 
conn.close(); 
conn = null; 

} catch (Exception e) { 
System.out.println("数据库关闭错误"); 
e.printStackTrace(); 






0 0
原创粉丝点击