mysql数据库连接javaweb_javaweb中mysql数据库连接方法

本文介绍了两种在JavaWeb中连接MySQL数据库的方法:1) 直接连接,详细阐述了加载驱动、获取连接、执行SQL及关闭资源的步骤。2) 封装数据库连接为工具类,通过db.properties配置文件实现全局修改。并提供了使用工具类进行数据库操作的示例。
摘要由CSDN通过智能技术生成

一、直接连接,不封装到工具类中,主要步骤:

先导包:mysql-connector-java-5.0.8-bin.jar(点击跳转到下载界面),放在WebRoot/WEB-INF/lib/下

1.加载驱动//com.mysql.jdbc.Driver

2.获取连接 Connection对象

3.获取用于向数据库发送SQL的Statement对象

4.执行sql,获取数据,解析数据

5.关闭连接,释放资源

/* 协议:子协议://主机:端口/数据库名 */

String url = "jdbc:mysql://localhost:3306/jdbctest";

// mysql数据库的用户名与密码,安装时自己设置,一般默认为root

String user = "root";

String password = "root";

Connection connection = null;

Statement statement = null;

ResultSet resultSet = null;

try {

// 1.加载驱动//com.mysql.jdbc.Driver

/*

* DriverManager.registerDriver(new

* Driver());用这种方法会加载两次驱动,也就是说会创建两个drive对象

*/

Class.forName("com.mysql.jdbc.Driver");

// 2.获取连接

connection = DriverManager.getConnection(url, user, password);

// 3.获取用于向数据库发送SQL的Statement对象

statement = connection.createStatement();

// 4.执行sql,获取数据

resultSet = statement.executeQuery("SELECT * FROM users;");

// 解析数据

while (resultSet.next()) {

int id = resultSet.getInt("id");

String name = resultSet.getString("name");

String psd = resultSet.getString("password");

String email = resultSet.getString("email");

String birthday = resultSet.getString("birthday");

System.out.println(id + " " + name + " " + psd + " " + email

+ " " + birthday);

}

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

} finally {

//5.关闭连接,释放资源

if (resultSet != null) {

try {

resultSet.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

resultSet = null;

}

if (statement != null) {

try {

statement.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

statement = null;

}

if (connection != null) {

try {

connection.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

connection = null;

}

}

二、将数据库连接封装成一个工具类

这样做的好处是,在实际开发中,就能做到,改一处即可修改全局。

1.建一个名为db.properties的配置文件,放于src/

url=jdbc:mysql://localhost:3306/jdbctest

username=root

password=root

driver=com.mysql.jdbc.Driver

2.工具类:

import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Properties;

public class JdbcUtil {

//私有静态变量,用以读取配置文件

private static Properties config=new Properties();

static{

try {

//配置资源文件

config.load(JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties"));

//加载驱动

Class.forName(config.getProperty("driver"));

} catch (IOException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

public static Connection getConnection(){

Connection connection=null;

try {

connection=DriverManager.getConnection(config.getProperty("url"),config.getProperty("username"),config.getProperty("password"));

} catch (SQLException e) {

e.printStackTrace();

}

return connection;

}

//用以关闭连接,释放资源

public static void releaseConn(Connection connection, Statement statement,

ResultSet resultSet) {

if(resultSet!=null){

try {

resultSet.close();

} catch (SQLException e) {

e.printStackTrace();

}

resultSet=null;

}

if(statement!=null){

try {

statement.close();

} catch (SQLException e) {

e.printStackTrace();

}

statement=null;

}

if(connection!=null){

try {

connection.close();

} catch (SQLException e) {

e.printStackTrace();

}

connection=null;

}

}

}3.使用实例:

Connection connection = null;

Statement statement = null;

ResultSet resultSet = null;

try {

// 调用工具类中的静态方法来获取连接

connection = JdbcUtil.getConnection();

statement = connection.createStatement();

resultSet = statement.executeQuery("select * from users");

while (resultSet.next()) {

int id = resultSet.getInt("id");

String name = resultSet.getString("name");

String psd = resultSet.getString("password");

String email = resultSet.getString("email");

String birthday = resultSet.getString("birthday");

System.out.println(id + " " + name + " " + psd + " " + email

+ " " + birthday);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

// 调用工具类中的静态方法来关闭连接,释放资源

JdbcUtil.releaseConn(connection, statement, resultSet);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值