在学习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();
}
}
}
*第一阶段: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();
}
}
}