JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。
JDBC常用的接口和类:
DriverManager
驱动管理器获得数据库连接
-Connection
数据库连接接口
-Statement
语句接口用来静态操作SQL语句
-PrepareStatement
预定义语句,用来动态操作SQL数据库
-CallableStatement
用来调用存储过程的预定义语句
-Result
结果集,保存数据记录的结果集合
-ResultSetMetaData
结果集元数据,如列名称,列类型等
-DataBaseMetaData
数据元数据,如数据库名称,版本等
JDBC的编程步骤
-加载数据库驱动(jar文件)
-获得数据库连接
-创建语句
-执行查询
-遍历结果集
-关闭数据库连接
代码演示
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test {
public static void main(String[] args) {
Connection conn =null;
try {
//加载数据库驱动(到JVM)
//这通过java.lang.Class类的静态方法forName(String className)实现。
//或者采用 new com.mysql.jdbc.Driver();
Class.forName("com.mysql.jdbc.Driver");
/* DriverManager.getConnection(url, user, password)
第一个参数:MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
避免中文乱码要指定useUnicode和characterEncoding
执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定
第二个参数:用户名
第三个参数:密码
*/
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/testmysql?useUnicode=true&characterEncoding=utf-8&useSSL=false", "root", "");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
//所有执行的sql语句
String sql = "select id,name,email from Customer";
try {
// Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等
Statement stmt = conn.createStatement();
//ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象。
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
//ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些
//行中数据的访问。
//使用结果集(ResultSet)对象的访问方法获取数据:
int id = rs.getInt(1);
String name = rs.getString(2);
String email = rs.getString(3);
System.out.println(id+","+name+","+email);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
if(conn != null){
try {
//关闭数据库
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
数据库中的表
运行结果
1,big tom,qwe@163.com
2,jane,jane@163.com
3,rose,rose@163.com