【Java编程】建立一个简单的JDBC连接-Drivers, Connection, Statement and PreparedStatement
本blog提供了一个简单的通过JDBC驱动建立JDBC连接例程。并分别通过Statement和PreparedStatement实现对数据库的查询。
在下一篇blog中将重点比較Statement与PreparedStatement的差异。
1、为项目加入JDBC驱动
1)JDBC驱动下载
官方下载地址:mysql-connector-java-5.0.8.zip
CSDN资料下载地址:mysql-connector-java-5.0.8.zip
2)为项目加入JDBC驱动
建立项目Java项目JDBCDemo,并在JDBCDemo项目中建立一个lib目录,将驱动文件复制到lib目录,选中驱动文件,右键->BuildPath->Add To Build Path;如图所看到的:
2、建立db_bbs数据库
1)构建一个数据库db_bbs;
2)运行db_bbs.sql文件的sql语句。在db_bbs数据库中创建user表。并加入数据;
SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(10) NOT NULL,`password` varchar(10) NOT NULL,`gender` varchar(1) NOT NULL,`regtime` datetime NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=gb2312;-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'andy', 'andy', '1', '2014-05-13 17:33:28');
INSERT INTO `user` VALUES ('2', 'jack', 'jack', '1', '2014-05-14 17:33:55');
INSERT INTO `user` VALUES ('3', 'rose', 'rose', '0', '2014-05-13 17:34:36');
3、通过属性文件配置数据库
1)属性配置文件db.properties;
#mysql DB properties
DB_DRIVER_CLASS=com.mysql.jdbc.Driver
DB_URL=jdbc:mysql://localhost:3306/db_bbs
DB_USERNAME=root
DB_PASSWORD=root#Oracle DB Properties
#DB_DRIVER_CLASS=oracle.jdbc.driver.OracleDriver
#DB_URL=jdbc:oracle:thin:@localhost:1571:db_bbs
#DB_USERNAME=scott
#DB_PASSWORD=tiger
2)将属性配置文件加入到项目的根文件夹;
4、建立JDBC连接
package com.andieguo.jdbc;import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;/*** 该类封装了连接和关闭数据库连接操作* * @author andieguo* */
public class DBConnection {public static Connection getConnection() {Properties props = new Properties();FileInputStream fis = null;Connection con = null;try {fis = new FileInputStream("db.properties");props.load(fis);// 载入驱动Class.forName(props.getProperty("DB_DRIVER_CLASS"));// 创建一个连接con = DriverManager.getConnection(props.getProperty("DB_URL"), props.getProperty("DB_USERNAME"), props.getProperty("DB_PASSWORD"));} catch (IOException | SQLException | ClassNotFoundException e) {e.printStackTrace();}return con;}// 关闭ResultSetpublic static void closeResultSet(ResultSet rs) {if (rs != null) {try {rs.close();rs = null;} catch (SQLException e) {e.printStackTrace();}}}// 关闭Statementpublic static void closeStatement(Statement stm) {if (stm != null) {try {stm.close();stm = null;} catch (SQLException e) {e.printStackTrace();}}}// 关闭PreparedStatementpublic static void closePreparedStatement(PreparedStatement pstm) {if (pstm != null) {try {pstm.close();pstm = null;} catch (SQLException e) {e.printStackTrace();}}}// 关闭Connectionpublic static void closeConnection(Connection con) {if (con != null) {try {con.close();con = null;} catch (SQLException e) {e.printStackTrace();}con = null;}}}
5、使用Statement进行查询
package com.andieguo.jdbc;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;public class DBHelper {public static void queryAllByStatement() {List<User> users = new ArrayList<User>();Connection conn = DBConnection.getConnection();Statement stmt = null;ResultSet rs = null;try {stmt = conn.createStatement();rs = stmt.executeQuery("select * from user");while (rs.next()) {User user = new User();user.setId(rs.getInt("id"));user.setUsername(rs.getString("username"));user.setPassword(rs.getString("password"));user.setGender(rs.getBoolean("gender"));user.setRegtime(rs.getDate("regtime"));System.out.println(user.toString());users.add(user);}} catch (SQLException e) {e.printStackTrace();} finally {DBConnection.closeResultSet(rs);DBConnection.closeStatement(stmt);DBConnection.closeConnection(conn);}}public static void queryById(Integer id) {Connection conn = DBConnection.getConnection();Statement stmt = null;ResultSet rs = null;try {stmt = conn.createStatement();rs = stmt.executeQuery("select * from user where id = " + id);while (rs.next()) {User user = new User();user.setId(rs.getInt("id"));user.setUsername(rs.getString("username"));user.setPassword(rs.getString("password"));user.setGender(rs.getBoolean("gender"));user.setRegtime(rs.getDate("regtime"));System.out.println(user.toString());}} catch (SQLException e) {e.printStackTrace();} finally {DBConnection.closeResultSet(rs);DBConnection.closeStatement(stmt);DBConnection.closeConnection(conn);}}}
6、使用PreparedStatement进行查询
package com.andieguo.jdbc;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;public class DBHelper {public static void queryAllByprepareStatement() {List<User> users = new ArrayList<User>();Connection conn = DBConnection.getConnection();PreparedStatement ps = null;ResultSet rs = null;try {ps = conn.prepareStatement("select * from user");rs = ps.executeQuery();while (rs.next()) {User user = new User();user.setId(rs.getInt("id"));user.setUsername(rs.getString("username"));user.setPassword(rs.getString("password"));user.setGender(rs.getBoolean("gender"));user.setRegtime(rs.getDate("regtime"));System.out.println(user.toString());users.add(user);}} catch (SQLException e) {e.printStackTrace();} finally {DBConnection.closeResultSet(rs);DBConnection.closeStatement(ps);DBConnection.closeConnection(conn);}}public static void queryPrepareById(Integer id) {Connection conn = DBConnection.getConnection();PreparedStatement ps = null;ResultSet rs = null;try {ps = conn.prepareStatement("select * from user where id = ?");ps.setInt(1, id);// 设置占位符參数rs = ps.executeQuery();while (rs.next()) {User user = new User();user.setId(rs.getInt("id"));user.setUsername(rs.getString("username"));user.setPassword(rs.getString("password"));user.setGender(rs.getBoolean("gender"));user.setRegtime(rs.getDate("regtime"));System.out.println(user.toString());}} catch (SQLException e) {e.printStackTrace();} finally {DBConnection.closeResultSet(rs);DBConnection.closeStatement(ps);DBConnection.closeConnection(conn);}}}
7、測试用例
package com.andieguo.jdbc;import junit.framework.TestCase;public class DBHelperTest extends TestCase {public void getConnectionTest(){System.out.println(DBConnection.getConnection());}public void queryAllByStatementTest(){DBHelper.queryAllByStatement();}public void queryAllByprepareStatementTest(){DBHelper.queryAllByprepareStatement();}public void queryByIdTest(){DBHelper.queryById(2);}public void queryByPrepareIdTest(){DBHelper.queryPrepareById(3);}}
8、參考
JDBC Example Tutorial – Drivers, Connection, Statement and ResultSet(推荐)
Java code for connecting Mysql database and using Arraylist type
9、你可能感兴趣的
转载于:https://www.cnblogs.com/clnchanpin/p/6852715.html
【Java编程】建立一个简单的JDBC连接-Drivers, Connection, Statement and PreparedStatement相关推荐
- JDBC笔记01-JDBC,Connection,Statement,ResultSet,PreparedStatement,Properties
学习目标 理解JDBC原理 掌握Connection接口的使用 掌握Statement接口的使用 掌握ResultSet接口的使用 掌握PreparedStatement接口的使用 掌握Propert ...
- Hibernate学习——建立一个简单的Hibernate项目
最近老师让做个web小应用,大三的时候学习过一点J2EE的东西,也做过一些web相关的XXX管理系统,都是用servlet,jsp这些完成的,虽然勉强能够完成任务,但其中各种代码掺杂在一起,不好看而且 ...
- 在独立Java应用程序中使用Tomcat JDBC连接池
这是从我们的客人文章W4G伙伴克拉伦斯豪的作者临春3从A按. 您可能会在文章结尾找到本书的折扣券代码,仅适用于Java Code Geeks的读者! 请享用! 在需要数据访问权限的独立Java应用程序 ...
- JAVA编写的一个简单的Socket实现的HTTP响应服务器
JAVA编写的一个简单的Socket实现的HTTP响应服务器,看后就很容易理解Web服务器的原理了. package test.io;import java.net.*; import java.io ...
- junit链接mysql_java – 使用JUnit进行简单的JDBC连接测试
我想简单测试JDBC连接,我不使用框架,只使用JDBC和JUnit.我可以用JUnit执行此测试吗?我不知道如何测试加载驱动程序,请给我一些连接测试的例子. 连接客户端: package newpac ...
- netfilter编程实例——一个简单的防火墙
一.iptables防火墙netfilter介绍 Linux 防火墙包含两部分,内核 netfilter 和用户空间工具 iptables.管理员通过 iptables 工具集和内核打交道,将防火墙规 ...
- Matlab中如何使用appdesigner设计工具建立一个简单的界面
Matlab中如何使用appdesigner设计工具建立一个简单的界面(数据的输入.处理和保存) 以使用不同算法处理图像的功能为例 建立一个新的空白界面,matlab中输入appdesigner,打开 ...
- Libra (介绍) 建立一个简单的全球货币和金融基础 (1)
1. 简介 Libra的使命是建立一个简单的全球货币和金融基础设施,使数十亿人受益[1]. 互联网和移动宽带的出现使全球数十亿人能够获得世界上的知识和信息.高保真通信以及广泛的低成本.更方便的服务.这 ...
- bat 删除文件_利用电脑文本文档建立一个简单方便的删除文件的小程序
删除文不需要的文件或者资料,是日常工作中必定会遇到了. 各种的杀毒软件或者防护软件都具备删除文件的功能,例如360.腾讯电脑管家.这些操作起来其实也不是太麻烦! 不过呢!今天来和大家分享一个更简单的方 ...
最新文章
- Leetcode 436.寻找右区间
- boost::binary_search相关的测试程序
- java activit怎么画图_Activiti 快速入门指南(用Java编写服务任务)
- springboot单例模式注入对象_Spring 中经典的 9 种设计模式,打死也要记住啊!
- JVM PermGen –您在哪里?
- 【HDU - 1702 】ACboy needs your help again! (栈和队列,水题模拟)
- java .jvp文件_GitHub - eddylapis/jvppeteer: Headless Chrome For Java (Java 爬虫)
- c语言指针改良,重新认识C语言指针(上)(示例代码)
- oracle转sparksql工具化,不使用Sqoop流程,利用CacheManager直接完成SparkSQL数据流直接回写Oracle...
- 理解 LruCache 机制
- Neo4j_02了解图数据库
- python静态方法_python的静态方法和类方法
- 计时器ajax,使用AJAX请求计时器
- 视觉SLAM十四讲 罗德里格斯公式推导 全解
- 编辑器,在线编辑器,微信编辑器,公众号编辑器,UEditor编辑器
- 3dmax卸载工具_3Dmax软件无法安装?3Dmax软件正确卸载方法,重装无忧
- Android studio点击按钮闪退问题
- 二. Binding 详解
- 马未都说收藏:陶瓷篇(1)历史朝代、陶器
- 流失用户召回方法策略,教你如何挽回流失用户