JDBC基本开发
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基本开发的更多相关文章
- (转)Spring+JDBC组合开发
http://blog.csdn.net/yerenyuan_pku/article/details/52882435 搭建和配置Spring与JDBC整合的环境 使用Spring+JDBC集成步骤如 ...
- 【总结】使用jdbc+servlet开发一个bug管理系统的经验总结
开发背景: 公司目前使用Teambition里面的task作为bug管理系统,既没有bug的当前状态,也不能写上bug的详细复现步骤,被assign了任务(该修复bug或者验证bug是否被修复)也没有 ...
- JDBC的开发步骤
一.JDBC概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问, 它由一组用Jav ...
- Spring + JDBC 组合开发集成步骤
1:配置数据源,如: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="h ...
- Spring笔记——Spring+JDBC组合开发
使用Spring+JDBC集成步骤如下: 1. 配置数据源 2. 配置事务.配置事务时,需要在xml配置文件中引入用于声明事务的tx命名空间,事务的配置方式有两种:注解方式和基于XML配置方式 ...
- Spring JDBC数据库开发
针对数据库操作,Spring框架提供了JdbcTemplate类. 1.Spring JDBC的配置 创建配置文件applicationContext.xml,添加如下代码: <!--配置数据源 ...
- DbUtils是Apache出品一款简化JDBC开发的工具类
DbUtils - DbUtils是Apache出品一款简化JDBC开发的工具类 - 使用DbUtils可以让我们JDBC的开发更加简单 - DbUtils的使用: ...
- 性能测试学习之路 (四)jmeter 脚本开发实战(JDBC &JMS &接口脚本 & 轻量级接口自动化测试框架)
1.业务级脚本开发 登录脚本->思路:在线程组下新建两个HTTP请求,一个是完成访问登录页,一个是完成登录的数据提交. 步骤如下: 1) 访问登录页 2) 提交登录数据的HTTP PS:对于 ...
- Java的JDBC操作
Java的JDBC操作 [TOC] 1.JDBC入门 1.1.什么是JDBC JDBC从物理结构上来说就是java语言访问数据库的一套接口集合,本质上是java语言根数据库之间的协议.JDBC提供一组 ...
随机推荐
- 201521123036 《Java程序设计》第9周学习总结
本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 书面作业 本次PTA作业题集异常 常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中 ...
- 201521123013 《Java程序设计》第11周学习总结
1. 本章学习总结 2. 书面作业 Q1.1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchronized修饰方法实现互斥同步访问,还有什么办法实现互斥 ...
- 201521123016《JAVA程序设计》第1周学习总结
本周学习总结 认识了Java包括JDK:Java开发工具包:JRE:Java执行环境:JVM:Java虚拟机 学习了一些JAVA基本语法,如:public class:public static vo ...
- openfire:openfire单独编译指定插件的方法
方法一: openfire默认编译时,是同时编译主程序和所有在plugins目录中的插件.但进行插件开发时,这样编译就太费时费力.使用ant plugins可以只编译插件,能够节省部分时间.最节省时间 ...
- CSS3滤镜(filter--CSS3技术
filter 属性定义了元素(通常是<img>)的可视效果,例如图片的模糊.饱和度.灰度等……个人感觉功能很强大 1.filter的语法 filter: none | blur() | b ...
- Mybatis第九篇【基于Maven在Idea下Mybatis逆向工程】
前言 在Intellij idea下,没有学习Maven的情况下使用Mybatis的逆向工程好像有点复杂,资料太少了-找到的资料好像也行不通- 于是学完Maven之后,我就再来更新Idea下使用Myb ...
- Python学习笔记006_异常_else_with
>>> # try-except语句 >>> >>> # try : >>> # 检测范围 >>> # exc ...
- 如何用一天时间实现自己的RPC框架
前言 最近,闲来无事,自己写了一个简单的RPC框架,我把它叫做SimpleRpc.它有多简单?一共只有1400行代码.这个RPC只是作为自己试验作品,交流技术之用,当然如果你敢用,也可以放到生产环境之 ...
- jquery对象和js对象
<ul id="ul1"> <li id="li_1">01</li> <li>02</li> ...
- AngularJS–Scope(作用域)
点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ Scope Scope 是一个应用程序的模块的对象.它是表达式的执行上下文.它充斥在DO ...