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. 201521123030《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 控制可见性的4个访问修饰符 private -- 仅对本类可见 public -- 对所有类 ...

  2. 201521123071《Java程序设计》第1周学习总结

    1. 本章学习总结 通过本周的学习,对java的一些语法以及java的发展史有了一定的基础认识,也了解了JDK的安装,以及环境变量定义和配置等知识.还有对码云,Markdown等的使用,大大方便了我们 ...

  3. CoordinatorLayout的使用

    最近项目有一个需求,做出类似闲鱼鱼塘界面的效果.如下图: 所以想到用CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout去搭建此界面. Coor ...

  4. 从JS和jQuery浅谈DOM操作,当我们在获取时,究竟获取了什么

    0.写在前面的话 自己对前端的东西一直不是很熟,现在开始要想办法从前端各个地方去获取想要的属性值的时候,也基本是在网上现炒现卖,几周下来,发现自己还是迷迷糊糊,可以算是一无所获. 所以就抽时间,把这一 ...

  5. mybatis-java-依赖注入

    第一种 setXXX形式的注入 我们的所有dao都会继承自定义的BaseDao,因此在BaseDao中完成对所有dao的注入 在DaoUtil中增加方法injectDao()来注入具体的dao pac ...

  6. 框架应用:Mybatis(二) - 动态SQL

    MybatisUtil工具类 在实际开发中,我们可以编写一个MybatisUtil辅助类来进行对进行操作. 1)在静态初始化块中加载mybatis配置文件和StudentMapper.xml文件一次 ...

  7. RabbitMQ消息队列之二:消费者和生产者

    在使用RabbitMQ之前,需要了解RabbitMQ的工作原理. RabbitMQ的工作原理 RabbitMQ是消息代理.从本质上说,它接受来自生产者的信息,并将它们传递给消费者.在两者之间,它可以根 ...

  8. STM32获取DHT11温度传感器数据

    准备物件 STM32F103C8T6核心板 ST-LINK V2 DHT11 杜邦线若干 连接线 STM32F103C8T6芯片管脚图 管脚说明 连接仿真器 STM32 ST-LINKV2 VCC V ...

  9. MySQL+Keepalived配置高可用

    服务器环境: 主mysql:192.168.1.163 从mysql:192.168.1.126 VIP:192.168.1.50 一.mysql配置主从同步 1.配置主mysql服务器 vim /e ...

  10. Sequence query 好题啊

    Sequence query Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Subm ...