JDBC的详细使用
1.首先说一下需要用到的工具:
①我这里用的数据库是MySql5.6 ,MySql6.0开始被Oracle收购需要付费了,6.0以下版本免费。
②去Maven仓库下载JDBC的jar包 Maven仓库地址:http://mvnrepository.com/ 我使用的版本是5.0.5
③将jar包放到项目下的lib目录下
2.接下来给大家上一段简单的使用代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import com.mysql.jdbc.Driver; /**
* 普通的jdbc操作
*
* @author AdminHeJun
*
*/
public class JdbcNomal {
private static PreparedStatement prepareStatement;
private static ResultSet result; public static void main(String[] args) throws Exception {
// 得到数据库连接
Connection connection = getConnection();
// 需要执行的sql
String sql = "select *from info";
prepareStatement = connection.prepareStatement(sql);
result = prepareStatement.executeQuery(); while (result.next()) {
String id = result.getString();
String name = result.getString();
String age = result.getString();
System.out.println("id=" + id + "---name=" + name + "----age="
+ age);
}
// 关闭结果集
result.close();
// 操作完关闭连接
connection.close();
} private static Connection getConnection() {
// 得到数据库连接
Connection connection;
try {
// 注册jdbc驱动
DriverManager.registerDriver(new Driver());
// 参数1:数据库地址 惨数2:数据库用户名 参数3:密码
connection = DriverManager
.getConnection("jdbc:mysql://127.0.0.1:3306/testdb",
"root", "hejun254331");
System.out.println("数据库链接成功!");
return connection;
} catch (SQLException e) {
e.printStackTrace();
return null;
} }
}
3.给大家分享一下我在实际开发中对JDBC操作拿到数据库连接的方法
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties; import java.sql.PreparedStatement;
/**
* @author AdminHeJun 为了开发的方便起见 我把数据库的连接信息放在了DBConfig.properties配置文件中方便管理
* 此配置文件存储数据的方式与Map的键值对是一样的通过键取相应的值
* 此类中调用了getConnection方法就必须要调用releaseConnection方法释放资源
*/
public class JdbcUtils {
// 数据库用户
private static String user;
// 数据库密码
private static String password;
// 数据库连接地址
private static String conUrl;
// 数据库连接驱动完整包名
private static String driverName;
// 此工具类的实例
private static JdbcUtils instance; // 获取配置信息的静态代码块
static {
try {
// 得到配置文件的输入流 JdbcUtils.class.getResourceAsStream此方法是获取当前类包名下的文件输入流
InputStream inputStream = JdbcUtils.class
.getResourceAsStream("DBConfig.properties");
// 创建一个操作配置文件的对象 见名知意 不多做解释了
Properties properties = new Properties();
// 加载配置文件的输入流
properties.load(inputStream);
// 开始获取配置文件里的信息
user = (String) properties.get("user");
password = (String) properties.get("password");
conUrl = (String) properties.get("connUrl");
driverName = (String) properties.get("driverName");
System.out.println("获取配置信息成功!");
System.out.println("user=" + user + "\npassword=" + password
+ "\nconUrl=" + conUrl + "\ndriverName=" + driverName);
} catch (Exception e) {
System.out.println("获取配置信息出错!");
}
}
// 注册数据库驱动的静态代码块
static {
try {
Class.forName(driverName);
System.out.println("驱动注成功!");
} catch (Exception e) {
System.out.println("驱动注册失败!");
}
} // 私有的构造方法防止外界直接new对象 这里是通过 getInstance方法来获取此类的实例
private JdbcUtils() { } // 获取此类的实例 这种设计方法也就是常说的java单列设计模式
public static JdbcUtils getInstance() {
if (instance == null) {
// 防止多线程同时操作
synchronized (JdbcUtils.class) {
instance = new JdbcUtils();
}
}
return instance;
} // 得到数据库连接对象
public Connection getConnection() {
try {
Connection connection = DriverManager.getConnection(conUrl, user,
password);
System.out.println("数据库连接成功!");
return connection;
} catch (SQLException e) {
e.printStackTrace();
System.out.println("数据库连接失败!");
}
return null;
} // 释放连接资源
public void releaseConnection(Connection connection,
PreparedStatement pStatement, ResultSet rSet) {
try {
// 关闭结果集
if (rSet != null) {
rSet.close();
}
// 关闭sql语句执行对象
if (pStatement != null) {
pStatement.close();
}
// 关闭数据库连接
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
System.out.println("关闭资源出错!");
}
}
}
调用演示
public static void main(String[] args) throws Exception {
// 得到连接
Connection connection = JdbcUtils.getInstance().getConnection();
String sql = "select *from info";
PreparedStatement prepareStatement = connection.prepareStatement(sql);
ResultSet resultSet = prepareStatement.executeQuery();
while (resultSet.next()) {
String id = resultSet.getString();
String name = resultSet.getString();
String age = resultSet.getString();
System.out.println("id=" + id + "---name=" + name + "----age="
+ age);
}
// 释放资源
JdbcUtils.getInstance().releaseConnection(connection, prepareStatement,
resultSet); }
打印结果:
DBConfig.properties文件截图
JDBC的详细使用的更多相关文章
- Spring JDBC常用方法详细示例
Spring JDBC使用简单,代码简洁明了,非常适合快速开发的小型项目.下面对开发中常用的增删改查等方法逐一示例说明使用方法 1 环境准备 启动MySQL, 创建一个名为test的数据库 创建Mav ...
- Java学习笔记--JDBC数据库的使用
参考 hu_shengyang的专栏 : http://blog.csdn.net/hu_shengyang/article/details/6290029 一. JDBC API中提供的常用数据库 ...
- spring+struts2+mybatis
struts2.2.3 + spring3.1.0 + mybatis3.1.0集成简单demo 项目下载地址:http://download.csdn.net/detail/afgasdg/4171 ...
- JTA事务管理--配置剖析
概述 [IT168 专稿]Spring 通过AOP技术可以让我们在脱离EJB的情况下享受声明式事务的丰盛大餐,脱离Java EE应用服务器使用声明式事务的道路已经畅通无阻.但是很大部分人都还认为 ...
- python自动化测试入门篇-jemter连接mysql数据库
jmeter对数据库的操作主要包括以下几个步骤:1.导入mysqlde jdbc的jar包:2.创建数据库连接配置:3.线程组添加jdbc request;4.启动按钮,添加查看结果树 一.准备好驱动 ...
- Impala 使用的端口
下表中列出了 Impala 是用的 TCP 端口.在部署 Impala 之前,请确保每个系统上这些端口都是打开的. 组件 服务 端口 访问需求 备注 Impala Daemon Impala 守护进程 ...
- (转载)Android常用的Dialog对话框用法
Android常用的Dialog对话框用法 Android的版本有很多通常开发的时候对话框大多数使用自定义或是 Google提供的V4, V7 兼容包来开发保持各个版本的对话框样式统一,所以这里使用的 ...
- SpringBoot整合MyBatis与MySql8.0
一.前言 之前已经有一篇文章讨论过SpringBoot整合MyBatis,因而此篇不在重复累赘,本文主要是最新版的SpringBoot2.0与MyBatis.最新MySQL8.0整合过程中遇到的问题进 ...
- 《精通Spring4.x企业应用开发实战》第二章
昨天联系了一下学长,学长说这个项目因为种种原因代码比较混乱,感觉最坏的打算是从头开始写. 大概询问了一下学长和xianhua学姐的建议,又看了看网上的资料,这个项目开发的技术栈基本就是SpringBo ...
随机推荐
- noip模拟赛 同余方程组
分析:这道题一个一个枚举都能有70分...... 前60分可以用中国剩余定理搞一搞.然而并没有枚举分数高......考虑怎么省去不必要的枚举,每次跳都只跳a的倍数,这样对前面的式子没有影响,为了使得这 ...
- hdu_1048_The Hardest Problem Ever_201311052052
The Hardest Problem Ever Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- CODEVS——T 1036 商务旅行
http://codevs.cn/problem/1036/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Descript ...
- 洛谷 P1586 四方定理
P1586 四方定理 题目描述 四方定理是众所周知的:任意一个正整数nn,可以分解为不超过四个整数的平方和.例如:25=1^{2}+2^{2}+2^{2}+4^{2}25=12+22+2 ...
- cogs 29. 公路建设
29. 公路建设 ★ 输入文件:road.in 输出文件:road.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] A 国是一个新兴的国家,有 N 个城市,分别 ...
- 有趣的linux shell 命令, 跑马车
apt-get install sl
- LinkedList,ArrayList末尾插入谁效率高?
废话不多说,原因不解释.上測试代码: package com.letv.cloud.cdn.jtest; import java.io.IOException; import java.util.Ar ...
- window.open()方法(弹出层)
1, 最主要的弹出窗体代码 window.open('page.html'); 2, 经过设置后的弹出窗体 window.open('page.html', 'newwindow', 'h ...
- HDU 4259(Double Dealing-lcm(x1..xn)=lcm(x1,lcm(x2..xn))
Double Dealing Time Limit: 50000/20000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- bzoj4197 [Noi2015]寿司晚宴——状压DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4197 首先,两个人选的数都互质可以看作是一个人选了一个数,就相当于选了一个质因数集合,另一个 ...