JDBC基本开发步骤

一:注册驱动

 方式一:DriverManager.registerDriver(new Driver()); //存在注册两次问题,性能较低,消耗资源
方式二:Class.forName("com.mysql.jdbc.Driver"); //开发中推荐

二:获取连接对象

//导入Java.sql包下COnnection
Connnection conn = DriverManager.getConnection();

三: 创建执行SQL语句的Statement对象

方式一:Statement stmt = conn.createStatement(); //存在SQL注入的问题,不推荐使用
方式二: Preparedstatement ps = conn.prepareStatement(); // 预编译对象,解决SQL注入问题

四:执行SQL语句

  查询

ResultSet rs = ps.executeQuery(sql语句)
//判断结果是否存在结果 next()
while(rs.next()) {
//获取结果
getXxx(列的值)
getString(列的名)
}

  增删改

executeUpdate(sql语句)
execute(sql) 结果是布尔类型,如果是查询操作返回true,增删改false

五:释放资源

查询: 关闭结果集  statement对象  connection对象
增删改: statement对象 connection对象

JDBC工具类编写

第一步:将工具类构造方法私有化

第二步:在工具类里面对外的访问方法,方法修饰为静态static的

 public class JdbcUtils {

     //工具类的构造方法私有化
private JdbcUtils() { } //提供一个获取连接对象的方法
public static Connection getConnection() throws Exception {
//1,注册驱动
//DriverManager.registerDriver(new Driver()); //硬编码
Class.forName("com.mysql.jdbc.Driver");
//2,获取连接对象
String url = "jdbc:mysql://localhost:3306/heimatmall";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
} //针对查询释放资源
public static void release(ResultSet rs,Statement stmt,Connection conn) { if(rs != null) { //判断对象不为空
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
rs = null; //Java自动垃圾机制,加快垃圾对象回收
} if(stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
stmt = null;
} if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn = null;
} } //针对增删改释放资源
public static void release(Statement stmt,Connection conn) { if(stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
stmt = null;
} if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn = null;
} } }

读取配置文件

方式一:使用Properties读取配置文件

​ 步骤一:创建properties对象

​ 步骤二:创建字节流对象,读取配置文件

​ 步骤三: 将字节流对象传给properites对象。使用load方法关联

​ 步骤四: 使用getProperty(“键的名字”)获取指定的值

 public class MyJdbcUtils {
private static String driverName;
private static String url;
private static String user;
private static String password; //工具类的构造方法私有化
private MyJdbcUtils() { } //静态代码块:随着类的加载而加载,并且只执行一次
static {
//注册驱动
try {
//System.out.println("开始执行静态代码块里面的代码....读取配置文件完成注册驱动");
//第一步:创建Properties对象
Properties prop = new Properties();
//第二步:创建一个 字节流对象,关联要读取的properties文件
FileInputStream fis = new FileInputStream("src/jdbc.properties");
//第三步:传入字节流对象给properties对象
prop.load(fis);
//第四步:获取数据
driverName = prop.getProperty("DriverName");
url = prop.getProperty("url");
user = prop.getProperty("user");
password = prop.getProperty("password");
//注册驱动
Class.forName(driverName);
} catch (Exception e) { //异常处理快捷键:alt++shift+z
// TODO Auto-generated catch block
e.printStackTrace();
}
} //提供一个获取连接对象的方法
public static Connection getConnection() throws Exception {
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
} //针对查询释放资源
public static void release(ResultSet rs,Statement stmt,Connection conn) { if(rs != null) { //判断对象不为空
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
rs = null; //Java自动垃圾机制,加快垃圾对象回收
} if(stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
stmt = null;
} if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn = null;
} } //针对增删改释放资源
public static void release(Statement stmt,Connection conn) { if(stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
stmt = null;
} if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn = null;
} } }

方式二:使用ResourceBundle对象读取

 //扩展:使用ResourceBundle读取,注意:读取的目录是src下面的properties文件
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
driverName = bundle.getString("DriverName");
url = bundle.getString("url");
user = bundle.getString("user");
password = bundle.getString("password");
Class.forName(driverName);

JDBC基本开发的更多相关文章

  1. (转)Spring+JDBC组合开发

    http://blog.csdn.net/yerenyuan_pku/article/details/52882435 搭建和配置Spring与JDBC整合的环境 使用Spring+JDBC集成步骤如 ...

  2. 【总结】使用jdbc+servlet开发一个bug管理系统的经验总结

    开发背景: 公司目前使用Teambition里面的task作为bug管理系统,既没有bug的当前状态,也不能写上bug的详细复现步骤,被assign了任务(该修复bug或者验证bug是否被修复)也没有 ...

  3. JDBC的开发步骤

    一.JDBC概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问, 它由一组用Jav ...

  4. Spring + JDBC 组合开发集成步骤

    1:配置数据源,如: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="h ...

  5. Spring笔记——Spring+JDBC组合开发

      使用Spring+JDBC集成步骤如下:   1. 配置数据源 2. 配置事务.配置事务时,需要在xml配置文件中引入用于声明事务的tx命名空间,事务的配置方式有两种:注解方式和基于XML配置方式 ...

  6. Spring JDBC数据库开发

    针对数据库操作,Spring框架提供了JdbcTemplate类. 1.Spring JDBC的配置 创建配置文件applicationContext.xml,添加如下代码: <!--配置数据源 ...

  7. DbUtils是Apache出品一款简化JDBC开发的工具类

    DbUtils     - DbUtils是Apache出品一款简化JDBC开发的工具类     - 使用DbUtils可以让我们JDBC的开发更加简单     - DbUtils的使用:       ...

  8. 性能测试学习之路 (四)jmeter 脚本开发实战(JDBC &JMS &接口脚本 & 轻量级接口自动化测试框架)

    1.业务级脚本开发 登录脚本->思路:在线程组下新建两个HTTP请求,一个是完成访问登录页,一个是完成登录的数据提交.   步骤如下: 1) 访问登录页 2) 提交登录数据的HTTP PS:对于 ...

  9. Java的JDBC操作

    Java的JDBC操作 [TOC] 1.JDBC入门 1.1.什么是JDBC JDBC从物理结构上来说就是java语言访问数据库的一套接口集合,本质上是java语言根数据库之间的协议.JDBC提供一组 ...

随机推荐

  1. 201521123092《java程序设计》第十三周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 2.1. 网络基础 1.1 比较ping www.baidu.com与ping cec.j ...

  2. 关于学习Python的一些心得

    1.关注函数参数的类型,如列表,字符串,int,而不是关注函数的功能 2.导入模块numpy,dir(numpy) 查看所有属性 3.''.join(列表)  将列表拆成字符串

  3. MongoDB中的映射,限制记录和记录拼排序 文档的插入查询更新删除操作

    映射 在 MongoDB 中,映射(Projection)指的是只选择文档中的必要数据,而非全部数据.如果文档有 5 个字段,而你只需要显示 3 个,则只需选择 3 个字段即可. find() 方法 ...

  4. mybatis入门篇基——基本配置与参数说明

    Mybatis 好吧这是我第一次写这种文章~如果有不足和错误之处欢迎评论,指点.今天想谈谈关于mybatis的一些基础入门知识. 进入正题~~: a.关于mybatis: 我个人觉得mybatis深得 ...

  5. 西邮linux兴趣小组2014纳新免试题(一)

    [第一关] 题目 0101001001100001011100100010000100011010000001110000000011001111100100000111001100000000000 ...

  6. Redis学习——Redis持久化之RDB备份方式保存数据

    从这一个介绍里面知道,redis比memcache作为缓存数据库强大的地方,一个是支持的数据类型比较多,另一个就是redis持久化功能. 下面就介绍Redis的持久化之RDB! 一:什么是redis的 ...

  7. Bmob云IM实现头像更换并存入Bmob云数据库中(1.拍照替换,2.相册选择)

    看图效果如下: 1.个人资料界面 2.点击头像弹出对话框 3.点击拍照 4.切割图片,选择合适的部分 5.点击保存,头像替换完毕,下面看从相册中选择图片. 6.点击相册 7.任选一张图片 8.切割图片 ...

  8. 【专章】dp入门

    动态规划(简称dp),可以说是各种程序设计中遇到的第一个坎吧,这篇博文是我对dp的一点点理解,希望可以帮助更多人dp入门. ***实践是检验真理的唯一标准,看再多文章不如自己动手做几道!!!*** 先 ...

  9. 移动HTNL5前端框架—MUI

      前  言 JRedu 鉴于之前的很多前端框架(特别是响应式布局的框架),UI控件看起来太像网页,没有原生感觉,因此追求原生UI也是MUI的重要目标.MUI以iOS平台UI为基础,补充部分Andro ...

  10. Python自学笔记-关于切片(来自廖雪峰的官网Python3)

    感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 切片 L[0: ...