网站首页> 博客> 编写一个简单的 JDBC 程序,以mysql为例
编写一个简单的 JDBC 程序,以mysql为例
好文
3187
由于现在开发中用的都是框架,估计很多人连最基本的jdbc的连接方式都不记得了,现在带大家温故而知新。
连接数据库的步骤:
1、注册驱动(只做一次)
2、建立连接(Connection)
3、创建执行SQL的语句(Statement)
4、执行语句
5、处理执行结果(ResultSet)
6、释放资源
在写代码之前,我们需要导入数据库驱动,即 mysql-connector-java-5.0.8-bin.jar
导入 jar 包步骤:在项目名(JDBCDemo)上鼠标右键,然后左键点击 Properties,在弹出的 Properties for JDBCDemo 的窗口中按如下图中指引操作即可。

代码实现如下:
package com.fhcq.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCTest {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
test();
}
static void test() throws SQLException, ClassNotFoundException {
// 1.注册驱动
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");
Class.forName("com.mysql.jdbc.Driver");//推荐方式
// 2.建立连接
String url = "jdbc:mysql://localhost:3306/jdbc";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
// 3.创建语句
Statement st = conn.createStatement();
// 4.执行语句
ResultSet rs = st.executeQuery("select * from user");
// 5.处理结果(依次打印出 user 表中的4列基本数据项的值)
while (rs.next()) {
System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t"
+ rs.getObject(3)+"\t" + rs.getObject(4));
}
// 6.释放资源
rs.close();
st.close();
conn.close();
}
}
上述代码的实现其实是一个很不规范的例子,下面就来对其进行简单的优化:
我们首先写一个 JDBCUtils 工具类。首先来保证这个驱动只注册一次,然后再把【建立连接】 和 【释放资源】 的部分也都添加进来,这样在我们每次获取连接的时候都通过这个工具类来拿,还有就是不会每写一次都要把【释放资源】那么一大段代码都给带上了。
package com.fhcq.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public final class JDBCUtils {
private static String url = "jdbc:mysql://localhost:3306/jdbc";
private static String user = "root";
private static String password = "123456";
private JDBCUtils(){
}
static{
// 1.注册驱动
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
}
public static Connection getConnection() throws SQLException{
return DriverManager.getConnection(url, user, password);
}
public static void free(ResultSet rs,Statement st,Connection conn){
try{
if(rs!=null){
rs.close();
}
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(st != null){
st.close();
}
}catch(SQLException e){
e.printStackTrace();
}finally{
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
剩下的我们就来简化一下原有的代码,这样处理后的代码就可以作为我们的一个模板来使用了。
package com.fhcq.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBCTest {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
template();
}
static void template() throws Exception{
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
// 2.建立连接
conn = JDBCUtils.getConnection();
// 3.创建语句
st = conn.createStatement();
// 4.执行语句
rs = st.executeQuery("select * from user");
// 5.处理结果
while(rs.next()){
System.out.println(rs.getObject(1) + "\t" + rs.getObject(2)
+ "\t"+ rs.getObject(3)+"\t" + rs.getObject(4));
}
}finally{
JDBCUtils.free(rs, st, conn);
}
}
}- 加入微信群,不定期分享源码和经验
- 签到活跃榜 连续签到送额外金币
- 最新博客
- 校园跑腿系统外卖系统软件平台大学生创业平台搭建 1409
- 壹脉销客智能名片CRM系统小程序可二开源码交付部署 1430
- 为啥没搞了 2078
- Nginx 的 5 大应用场景,太实用了! 2208
- CentOS 8-stream 安装Postgresql 详细教程 2596
- JAVA智慧校园管理系统小程序源码 电子班牌 Sass 模式 1906
- Java智慧校园系统源码 智慧校园源码 智慧学校源码 智慧校园管理系统源码 小程序+电子班牌 1660
- Java智慧校园系统源码 智慧校园源码 智慧学校源码 智慧校园管理系统源码 小程序+电子班牌 1677
- 致远OA权限 2664
- 发博客会有金币吗 1716
jdk1.7
tomcat8.0
tomcat8.0
mysql
Navicat
Git
VsCode
TeamViewer


