Java 项目开发中数据库操作是很重要的一个方面,对于初学者来说,MySql是比较容易熟悉的一种常见数据库,这篇文章记录了如何用Java来操作MySql数据库。
第一章 JDBC的概念
JDBC(Java Database Connectivity)是连接Java和数据库的纽带,简单的说,就是Java利用JDBC API屏蔽掉了底层数据库具体实现的差异。对于不同的数据库,Java的操作方式是不同的,这样有两个优点:
- 简化了访问数据库的程序代码,无须涉及与底层数据库实现相关的细节
- 可以在同一个Java程序中使用多种数据库
对于不同的数据库,加载不同的驱动即可,比如,对于MySql数据库,需在工程中加入Externel Lib(如下图1.1所示),在程序中加入加载语句Class.forName("com.mysql.jdbc.Driver");即可。
图1.1
JDBC API是固定的,由Sun公司制定,所有第三方数据库供应商的数据库要提供给Java访问,必须实现这个API,我们称之为JDBC驱动。JDBC驱动管理器(java.sql.DriverManager)类也是由Sun公司实现的,负责注册特定的JDBC驱动,根据特定的数据库的JDBC驱动建立数据库连接。比如,对于MySql,一个典型的注册语句就是:DriverManager.registerDriver(new com.mysql.jdbc.Driver());
第二章 一个java连接MySql数据库的实例
JDBC API是固定的,由Sun公司制定,所有第三方数据库供应商的数据库要提供给Java访问,必须实现这个API,我们称之为JDBC驱动。JDBC驱动管理器(java.sql.DriverManager)类也是由Sun公司实现的,负责注册特定的JDBC驱动,根据特定的数据库的JDBC驱动建立数据库连接。比如,对于MySql,一个典型的注册语句就是:DriverManager.registerDriver(new com.mysql.jdbc.Driver());
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
package
databasetest;
import java.sql.*;
import java.util.*;
import java.io.*;
public class JDBCTest {
public
static void main(String[] args) throws
ClassNotFoundException,SQLException{
// TODO Auto-generated method stub
Connection con;
Statement stmt;
ResultSet rs;
//加载驱动程序,下面的代码加载MySQL驱动程序
Class.forName( "com.mysql.jdbc.Driver" );
String dbUser= "root" ;
String dbPwd= "miwusenlin" ;
//注册MySQL驱动程序
DriverManager.registerDriver( new
com.mysql.jdbc.Driver());
//用适当的驱动程序连接到数据库,建立数据库连接
con = java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);
//创建一个SQL声明
stmt = con.createStatement();
//增加新记录
stmt.executeQuery( "SET NAMES UTF8" );
stmt.executeUpdate( "insert into BOOKS (ID,NAME,TITLE,PRICE) values(‘999‘,‘汤姆‘,‘Tomcat Bible‘,44.5)" );
//查询记录
rs = stmt.executeQuery( "select ID,NAME,TITLE,PRICE from BOOKS" );
//打印所显示的数据
while
(rs.next()){
String col1 = rs.getString( 1 );
String col2 = rs.getString( 2 );
String col3 = rs.getString( 3 );
float
col4 = rs.getFloat( 4 );
//输出查询结果
System.out.println(col1+ " " +col2+ " " +col3+ " " +col4 );
}
stmt.executeUpdate( "delete from BOOKS where ID=‘999‘" );
//关闭数据库连接
rs.close();
stmt.close();
con.close();
}
} |
在上述代码中需要注意的是:String dbUrl = "jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=UTF8"; 中字符编码设定要和数据库中表的格式一致。
第三章 java.sql包中的接口和类
针对于MySql数据库的JDBC API主要位于java.sql包中,其中关键的接口如下:
- DriverManager类:主要是用来注册数据库驱动
- Connection接口:表示数据库连接
- Statement接口:负责执行SQL语句
- PreparedStatement接口:负责执行预准备的SQL语句
- CallableStatement接口:负责执行SQL存储过程
- ResultSet接口:表示SQL查询结果的返回值
参考: