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 ...
随机推荐
- Django——4 模板标签 模板的继承与引用
Django 模板标签 常用标签 模板的继承与引用 模板标签 标签在渲染的过程中提供任意的逻辑 标签语法: 由%}和 {% 来定义的,例如:{%tag%} {%endtag%} 这个定义是刻意模糊的. ...
- 洛谷 P2155 BZOJ 2186 codevs 2301 [SDOI2008]沙拉公主的困惑
题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的 ...
- 清北学堂模拟赛d4t1 a
分析:大模拟,没什么好说的.我在考场上犯了一个超级低级的错误:while (scanf("%s",s + 1)),导致了死循环,血的教训啊,以后要记住了. /* 1.没有发生改变, ...
- 单词接龙(codevs 1018)
2000年NOIP全国联赛普及组NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 单词接龙是一个与我们经 ...
- POJ 1416 Shredding Company 回溯搜索 DFS
Shredding Company Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6173 Accepted: 3361 ...
- [poj3321]Apple Tree_dfs序_树状数组
Apple Tree poj-3321 题目大意:给你一个根固定的树,每一个点的点权是0或1,查询子树点权和. 注释:$1\le n \le 10^5$. 想法:刚刚学习dfs序,刷到水题偶哈哈. 什 ...
- 任务调度分配题两道 POJ 1973 POJ 1180(斜率优化复习)
POJ 1973 这道题以前做过的.今儿重做一次.由于每个程序员要么做A,要么做B,可以联想到0/1背包(谢谢N巨).这样,可以设状态 dp[i][j]为i个程序员做j个A项目同时,最多可做多少个B项 ...
- 可编辑ztree节点的增删改功能图标控制---已解决
每文一语:休倚时来势,提防运去时 <!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - beforeEd ...
- linux各种IPC机制(进程通信)
linux各种IPC机制 (2011-07-08 16:58:35) 原文地址:linux各种IPC机制(转)作者:jianpengliu 原帖发表在IBM的developerworks网站 ...
- 欢聚时代校园招聘java开发一面经历
收到yy短信通知笔试通过后隔天就一面了,面试时间是下午1点半,跟另外一个同学在1点半的时候已经到了目的酒店,发现面试都集中在一个大厅,摆了非常多桌椅,由不同的面试关在面试.等到2点多的时候才到我.先说 ...