最近也在抽时间学习java web开发,学到JDBC感觉内容繁多,因此想用博客来记录自己的学习体会。博主是一个菜鸟,技术一般,只是想用博客来给自己形成知识体系,写的不好,勿喷。
JDBC是一套用来处理具有表格结构的数据的API,特别是关系型数据库。JDBC管理数据库需要实现一下三步骤:
- 连接数据源,比如数据库
- 对数据库发送查询、更新请求
接收和处理从数据库查询回来的结果
下面来说说怎么获取数据库连接并且操作数据库数据
示例代码
package com.wnl.connect_database;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import java.util.ResourceBundle;
import org.junit.Test;
import com.mysql.jdbc.Driver;
/**
* 介绍四种不同方法来取得数据库连接
*
* @author Administrator
*
*/
public class JDBC_ConnectDatabase {
@Test
public void test1() {
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
try {
// 使用前记得 导入mysql-connector-java-5.0.8-bin jar包
// 1 注册驱动
// DriverManager.registerDriver(new
// com.mysql.jdbc.Driver());这种方法不建议使用,两次创建对象
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/javaee";// 格式:jdbc:myDriver:myDatabase
String user = "root";// 数据库用户名
String password = "root";// 数据库用户名密码
// 2 获取连接
conn = DriverManager.getConnection(url, user, password);
// 3 创建SQL语句对象
stmt = conn.createStatement();
// 4 执行SQL语句
stmt.executeQuery("select * from a");
if (stmt.execute("select * from a")) {// 判断是否成功执行了SQL语句
rs = stmt.getResultSet();
while (rs.next()) {// 判断rs是否有数据,如果有全部遍历出数据
// String name=rs.getString(2);
// int number=rs.getInt(3);
String name = rs.getString("name");
int number = rs.getInt("number");
System.out.println("名字: " + name + " 数字: " + number);
/**
* 输出: 名字: B 数字: 2 名字: A 数字: 2 名字: B 数字: 42 名字: CC 数字: 1000
* 名字:Z 数字: 1 名字: Lisi 数字: 18
*/
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
release(conn, rs, stmt);
}
}
@Test
// 使用配置文件配置信息
public void test2() {
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
try {
// 1 注册驱动
// DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver");
// 2 取得连接
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "root");
String url = "jdbc:mysql://localhost:3306/javaee";
conn = DriverManager.getConnection(url, info);
// 创建并执行SQL语句
stmt = conn.createStatement();
// stmt.executeQuery("select * from a");
if (stmt.execute("select * from a")) {
rs = stmt.getResultSet();
while (rs.next()) {
String name = rs.getString("name");
int number = rs.getInt("number");
System.out.println("名字: " + name + " 数字: " + number);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
release(conn, rs, stmt);
}
}
@Test
public void test3() {
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
try {
// 1 注册驱动
// DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver");
// 2 取得连接
conn = DriverManager
.getConnection("jdbc:mysql://localhost:3306/javaee?user=root&password=root");
// 创建并执行SQL语句
stmt = conn.createStatement();
// stmt.executeQuery("select * from a");
if (stmt.execute("select * from a")) {
rs = stmt.getResultSet();
while (rs.next()) {
String name = rs.getString("name");
int number = rs.getInt("number");
System.out.println("名字: " + name + " 数字: " + number);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
release(conn, rs, stmt);
}
}
@Test
public void test4() {
// 1 配置数据库文件:在src目录下新建.properties文件
// 配置文件中配置好url,user,password,driverClassName的值
// 2 取出配置信息
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
ResourceBundle rb = ResourceBundle.getBundle("database");// 文件基名,文件所在包的包名
String driverClassName = rb.getString("driverClassName");
String url = rb.getString("url");
String user = rb.getString("user");
String password = rb.getString("password");
// 方法一
// InputStream is=
// JDBC_ConnectDatabase.class.getClassLoader().getResourceAsStream("src/database.properties");//包含后文件缀的文件名称名称
// Properties info=new Properties();
// info.load(is);
// String url = info.getProperty("url");
// String user = info.getProperty("user");
// String password = info.getProperty("password");
// String driverClassName = info.getProperty("driverClassName");
try {
Class.forName(driverClassName);
conn = DriverManager.getConnection(url, user, password);
stmt = conn.createStatement();
// stmt.executeUpdate("insert into a (name,number) values('android',15)");
if (stmt.execute("insert into a (name,number) values('android',15)")) {
// stmt.execute("insert into a (name,number) values('android',15)")此语句执行一次添加操作
// rs = stmt.getResultSet();
// while (rs.next()) {
// String name = rs.getString("name");
// int number = rs.getInt("number");
// System.out.println("名字: " + name + " 数字: " + number);
// }
}
} catch (Exception e) {
e.printStackTrace();
} finally {
release(conn, rs, stmt);
}
}
private void release(Connection conn, ResultSet rs, Statement stmt) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
}