JDBC的几个步骤
JDBC:JAVA访问数据库的解决方案。
几个步骤:1.加载驱动类;
2.与数据库建立连接;
3.执行SQL语句
4.处理结果集
5.关闭连接
1. 第一步:加载驱动类:
需要注意:不同的数据库,参照的字符串不同,ORACLE的连接为:Class.forName("oracle.jdbc.driver.OracleDriver"); 这一步执行后,程序可能会抛出: ClassNotFoundException,原因一般有:
a. 数据库的驱动jar包没有导入到环境变量中
b. Class.forName中的字符串拼写不正确
2. 第二步:通过DriverManager与数据库建立连接:
其静态方法getConnection用来获取连接。通常需要传入三个参数
参数1:数据库的地址及端口(不同数据库字符串内容不相同)
oracle的地址:jdbc:oracle:thin:@host:port:sid
参数2:数据库的用户名
参数3:数据库对应用户名的密码
Connection conn = DriverManager.getConnect
("jdbc:oracle:thin:@host:port:oracle","user", "psd");
3.第三步:java.sql.Statement 执行SQL语句并获取结果
Statement state = conn.createStatement();
String sql="/*这里面是SQL语句*/ ";
Statement针对不同的SQL语句提供了不同的执行方法:
ResultSet executeQuery(String sql)
* 该方法专门用来执行DQL语句,返回的ResultSet表示查询出来的结果集
int executeUpdate(String sql)
* 该方法专门用来执行DML语句,返回的数字表示执行该语句影响了表中多少条数据
boolean execute(String sql)
* 该方法理论上什么语句都可以执行了,但是由于DQL,DML都有专门的方法执行了,所以该方法通常用来执行DDL语句
ResultSet rs = state.executeQuery(sql);
输出查询结果:while(rs.next())
{ 输出语句 }
ResultSet提供用于遍历结果集的方法:
boolean next()
*该方法有两个作用,首先当我们查询出结果集后rs的指针指向第一条数据之上,所以我们需要先调用一次next()使其指针移动到第一条数据上并表示该条数据。 第二个作用是看返回值,若指针向下移动后,发现没有数据了,会返回false,若有则返回true,所以我们只有在该方法返回true的情况下才获取当前记录的各个字段对应的值
RS还提供了若干个getXXX(String fieldName)方法:
*这一系列方法是用来获取RS表示的当前记录中给定字段对应的值。不同的字段由于类型不同需要调用相对应的方法
第4步:关闭连接,写在finally块中
finally{
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
将数据库的连接放在一个工具类里面,达到重用的效果
由于访问数据库是经常要用到的操作,所以在工程中,通常编写一个访问数据库的工具类,此后所有访问数据库的操作,都从工具类中获取连接,实现工具类的两种方式:
1.直接把数据配置写在工具类DBUtil中
2.把数据库配置写在一个properties属性文件里,工具类读入属性文件,逐行获取数据库参数(一般使用第二种)
若使用第一种方法,在后期需要修改所使用的数据库或者说修改host、端口、数据库连接名、密码等等时,就需要修改源代码里面的数据,不便于系统的维护,故一般使用第二种方法
数据库连接工具类DBUtil.java以及连接池的主要步骤:
Properties prop = new Properties();
prop.load(new FileInputStream("config.properties"));
//根据配置项初始化
String driverName = prop.getProperty("driverName");
String url = prop.getProperty("url");
String username = prop.getProperty("username");
String password = prop.getProperty("password");
//最大连接数
int maxActive = Integer.parseInt(prop.getProperty("maxActive"));
//最大等待时间
int maxWait = Integer.parseInt(prop.getProperty("maxWait"));
//初始化连接池
cp = new BasicDataSource();
//相当与是Class.forName()中的内容
cp.setDriverClassName(driverName);
cp.setUrl(url);
cp.setUsername(username);
cp.setPassword(password);
cp.setMaxActive(maxActive);
cp.setMaxWait(maxWait);
public static Connection getConnection() throws Exception{
return cp.getConnection();
}
JDBC的几个步骤的更多相关文章
- 完整java开发中JDBC连接数据库代码和步骤[申明:来源于网络]
完整java开发中JDBC连接数据库代码和步骤[申明:来源于网络] 地址:http://blog.csdn.net/qq_35101189/article/details/53729720?ref=m ...
- JDBC的概念&使用步骤
概念: JDBC(Java DataBase Connectivity)是一种数据库连接技术,能实现Java程序对各种数据库的访问.由一组使用Java语言编写的类和接口(JDBC API)组成,他们位 ...
- java开发中JDBC连接数据库代码和步骤
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...
- 【转】Java开发中JDBC连接数据库代码和步骤总结
(转自:http://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html) JDBC连接数据库 创建一个以JDBC连接数据库的程序,包含7个 ...
- Java中JDBC连接数据库代码和步骤详解总结
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Jav ...
- 完整java开发中JDBC连接数据库代码和步骤
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...
- JDBC简介及编码步骤
一.什么是JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...
- 完整java开发中JDBC连接数据库代码和步骤 JDBC连接数据库
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...
- JDBC连接(MySql)数据库步骤,以及查询、插入、删除、更新等十一个处理数据库信息的功能
主要内容: JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能.(包括事务处理,批量更新等) 把十 ...
随机推荐
- 1.2CPU和GPU的设计区别
CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景.CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理.这些都使得C ...
- Polymorphism
多态定义(百度百科):多态(Polymorphism)按字面的意思就是“多种状态”.在面向对象语言中,接口的多种不同的实现方式即为多态.引用Charlie Calverts对多态的描述 ——多态性是允 ...
- leetcode@ [208] Implement Trie (Prefix Tree)
Trie 树模板 https://leetcode.com/problems/implement-trie-prefix-tree/ class TrieNode { public: char var ...
- POJ2723-Get Luffy Out(2-SAT)
题意:有m扇门,每个门上有两把锁,打开任意一个锁都可以打开这扇门.门要按顺序一个一个打开. 现在有n对不同的钥匙,每对钥匙只能用其中一个,问最多能打开多少门. 题解:对钥匙建图,门是限制条件来建边.每 ...
- HDU 3436--Queue-jumpers (树状数组 or Splay Tree)
树状数组这个真心想了好久,还是没想出来 %%% www.cppblog.com/Yuan/archive/2010/08/18/123871.html 树状数组求前缀和大于等于k的最大值,第一次看到这 ...
- 编写Qt Designer自定义控件(二)——编写自定义控件界面
接上文:编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件 既然是控件,就应该有界面,默认生成的控件类只是一个继承了QWidget的类,如下: #ifndef LOGLATED ...
- android最快的模拟器
https://www.genymotion.com/ genymotion Genymotion是一套完整的工具,它提供了Android虚拟环境.它简直就是开发者.测试人员.推销者甚至是游戏玩家的福 ...
- PowerDesigner 15 概述
PowerDesigner 15 概述 数据结构数据库powerbuildersybasemicrosoftuml 目录(?)[+] 一. PowerDesigner 介绍 PowerDesi ...
- SMP和MAPP的区别
SMP(Symmetrical Multi-Processing),对称多处理系统,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构.它是相对非对称多处理技术而言 ...
- 已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。采用List集合和随机数
package homework002; import java.util.ArrayList; import java.util.List; import java.util.Random; p ...