JDBC 就是连接 Java代码连接 关系型数据库(MySQL,Oracle...)
一、基本介绍
JDBC 不直接连接各个关系型数据库的驱动,而是通过操作JDBC API 操作JDBC DriverManager进行 CRUD 操作。各个数据库对应的驱动程序(jar包)也是相关第三方提供的用以连接操作数据库。主要学习 JDBC 的各个 API 即可 。
JDBC 主要的工作就是
- 与数据库建立连接
- 对数据库进行 CRUD
- 返回处理结果(ResultSet)
二、JDBC使用
具体应用的类和接口:
- DriverManager 管理jdbc驱动
- Connection 管理Java与数据库的连接
- Statement(PreparedStatement) crud操作
- CallableStatement 调用存储过程、函数
- Result 结果集
1.具体步骤
- 导入驱动包,加载具体驱动类
Class.forName("com.mysql.jdbc.Driver");
- 建立与数据库的连接 使用连接字符串 jdbc:mysql://localhost:3306/数据库实例名
- 发送SQL
- 接受处理结果
- 关闭连接
代码如下(示例):
import java.sql.*; import java.sql.SQLException; public class JDBCBaseTest {...}
private static final String url="jdbc:mysql://localhost:3306/person"; private static final String user="root"; private static final String password="root"; public static void update() { Connection connect = null; Statement stmt = null; //加载驱动类 try { Class.forName("com.mysql.jdbc.Driver"); //通过 DriverManager 建立连接 connect = DriverManager.getConnection(url, user, password) ; //发送SQL执行 stmt = connect.createStatement(); String addSql = "insert into user(name,pwd) values ('ds02','282')"; boolean flag = stmt.execute(addSql); } catch ( Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { //关闭连接 try { stmt.close(); connect.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args) { // TODO Auto-generated method stub update() ; }
2.查询数据
代码如下(示例):
public static int queryCheck(String name) {
int flag=0;
Map resultMap = new HashMap();
Connection connect = null;
Statement stmt = null;
ResultSet rs = null;
// 加载驱动类
try {
Class.forName("com.mysql.jdbc.Driver");
// 通过 DriverManager 建立连接
connect = DriverManager.getConnection(url, user, password);
// 发送SQL执行
stmt = connect.createStatement();
String queryCheckSql = "select count(*) from user where name ='" + name + "'";
System.out.println("queryCheckSql: " + queryCheckSql);
rs = stmt.executeQuery(queryCheckSql);
rs.next();
flag= rs.getInt(1);
System.out.println(name + " count :" + flag);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 关闭连接
try {
rs.close();
stmt.close();
connect.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return flag;
}
该处使用 flag 返回值判断查询到几条数据。
其他知识(JSP展示查询到的所有结果)
这里参考其他人的博客。另外,如果在web项目中出现Java连接数据库 报错 空指针异常,很可能是因为依赖jar包只放在src的lib文件夹,没有放在webcontent文件的依赖lib文件夹中。