javaweb中mysql数据库连接步骤方法及其实例
作者:wbb 发布时间:2024-01-29 08:06:45
一、直接连接,不封装到工具类中,主要步骤:
先导包: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.关闭连接,释放资源
/*协议:子协议://主机:端口/数据库名*/
Stringurl="jdbc:mysql://localhost:3306/jdbctest";
//mysql数据库的用户名与密码,安装时自己设置,一般默认为root
Stringuser="root";
Stringpassword="root";
Connectionconnection=null;
Statementstatement=null;
ResultSetresultSet=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*FROMusers;");
//解析数据
while(resultSet.next()){
intid=resultSet.getInt("id");
Stringname=resultSet.getString("name");
Stringpsd=resultSet.getString("password");
Stringemail=resultSet.getString("email");
Stringbirthday=resultSet.getString("birthday");
System.out.println(id+""+name+""+psd+""+email
+""+birthday);
}
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}catch(SQLExceptione){
e.printStackTrace();
}finally{
//5.关闭连接,释放资源
if(resultSet!=null){
try{
resultSet.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
resultSet=null;
}
if(statement!=null){
try{
statement.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
statement=null;
}
if(connection!=null){
try{
connection.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
connection=null;
}
/* 协议:子协议://主机:端口/数据库名 */
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.Driver2.工具类:
importjava.io.IOException;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.Properties;
publicclassJdbcUtil{
//私有静态变量,用以读取配置文件
privatestaticPropertiesconfig=newProperties();
static{
try{
//配置资源文件
config.load(JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties"));
//加载驱动
Class.forName(config.getProperty("driver"));
}catch(IOExceptione){
e.printStackTrace();
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
}
publicstaticConnectiongetConnection(){
Connectionconnection=null;
try{
connection=DriverManager.getConnection(config.getProperty("url"),config.getProperty("username"),config.getProperty("password"));
}catch(SQLExceptione){
e.printStackTrace();
}
returnconnection;
}
//用以关闭连接,释放资源
publicstaticvoidreleaseConn(Connectionconnection,Statementstatement,
ResultSetresultSet){
if(resultSet!=null){
try{
resultSet.close();
}catch(SQLExceptione){
e.printStackTrace();
}
resultSet=null;
}
if(statement!=null){
try{
statement.close();
}catch(SQLExceptione){
e.printStackTrace();
}
statement=null;
}
if(connection!=null){
try{
connection.close();
}catch(SQLExceptione){
e.printStackTrace();
}
connection=null;
}
}
}3.使用实例:
Connectionconnection=null;
Statementstatement=null;
ResultSetresultSet=null;
try{
//调用工具类中的静态方法来获取连接
connection=JdbcUtil.getConnection();
statement=connection.createStatement();
resultSet=statement.executeQuery("select*fromusers");
while(resultSet.next()){
intid=resultSet.getInt("id");
Stringname=resultSet.getString("name");
Stringpsd=resultSet.getString("password");
Stringemail=resultSet.getString("email");
Stringbirthday=resultSet.getString("birthday");
System.out.println(id+""+name+""+psd+""+email
+""+birthday);
}
}catch(Exceptione){
e.printStackTrace();
}finally{
//调用工具类中的静态方法来关闭连接,释放资源
JdbcUtil.releaseConn(connection,statement,resultSet);
}
希望本文可以对需要的朋友有帮助
来源:http://www.2cto.com/kf/201702/596389.html
猜你喜欢
- Python字符串拼接的几种方法整理第一种 通过加号(+)的形式print('第一种方式通过加号形式连接 :' + '
- 一、简化代码采用更为简短的写法,不仅可以减少输入的字符数,还可以减少文件大小。大部分采用简单写法的代码,执行效率都有轻微提高。1.1&nbs
- 前言闲来无聊,写了一个爬虫程序获取百度疫情数据。申明一下,研究而已。而且页面应该会进程做反爬处理,可能需要调整对应xpath。Github仓
- 本文实例为大家分享了python实现比较文件内容异同的具体代码,供大家参考,具体内容如下import sysimport difflibim
- enum 是一组绑定到唯一常数值的符号名称,并且具备可迭代性和可比较性的特性。我们可以使用 enum 创建具有良好定义的标识符,而不是直接使
- # django manage.py扩展自定义命令环境: mac django1.10.3在实际的项目开发过程中,我们可能要执行某脚本初始化
- close方法可以释放一个连接的资源,但是不是立即释放,如果想立即释放,那么在close之前使用shutdown方法shut_rd() --
- 前言在Python中变量名规则与其他大多数高级语言一样,都是受C语言影响的,另外变量名是大小写敏感的。Python是动态类型语言,也就是说不
- 前言Python 的一大优点就是丰富的类库,所以我们经常会用 pip 来安装各种库,所以对于Python开发用户来讲,PIP安装软件包是家常
- 前言网上经常能看到一些文章总结在 mysql 中不能命中索引的各种情况,其中有一种说法就是指使用了 or 的语句都不能命中索引。这种说法其实
- opencv读取和写入路径有汉字的处理读取图片 img_gt = cv2.imdecode(np.fromfile(path, d
- 本文通过Python3+PyQt5实现《python Qt Gui 快速编程》这本书13章程序Rich文本的行编辑,可以通过鼠标右键选择对文
- 本文介绍了python中的计时器timeit的使用方法,分享给大家,具体如下:timeit通常在一段程序的前后都用上time.time(),
- JS:$(".con").eq(0).show(); $(".btn span").cl
- 或者你还有其它的sysadmin权限的账号,你可以用此账号登录,重置SA密码。 但是在以下情况下,怎么办呢?1. SA密码丢失或者SA账号被
- 本文实例讲述了python os模块简单应用。分享给大家供大家参考,具体如下:举例中的目录形式如下所示:In [36]: pwdOut[36
- Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Djang
- 前言本人在学习go-micro中,用到Makefile,本人之前用过Makefile,但是不知道为什么这会就不能用了,我找了好多教程都没能解
- 题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3-
- MySQL Order By keyword是用来给记录中的数据进行分类的。MySQL Order By Keyword根据关键词分类ORD