在此以Oracle数据库举例。
首先创建一个maven项目,项目名称我就以"JSD1609_JDBC"来命名。
通过阿里云镜像仓库:http://maven.aliyun.com/nexus
在maven的settings.xml 文件里配置mirrors的子节点,添加如下mirror
<mirror>
<id>nexus-aliyunid>
<mirrorOf>*mirrorOf>
<name>Nexus aliyunname>
<url>http://maven.aliyun.com/nexus/content/groups/publicurl>
mirror>
导入两个包:ojdbc14-10.2.0.4.0.jar
commons-DBCP-1.4.jar(该包依赖commons.pool-1.5.4.jar)
commons.pool-1.5.4.jar
创建一个demo01.java的项目:
思路:
1、加载数据库驱动(涉及一个参数)
2、连接到数据库(涉及三个参数)
3、创建语句对象
4、执行SQL
5、处理结果
6、关闭数据库连接
以DDL语句为例,写一个简单的连接过程。
import java.sql.Connection
import java.sql.DriverManager;
import java.sql.Statement;
public class Demo01 {
public static void main(String[] args) throws Exception {
//1、加载数据库驱动
Class.forName("oracle.jdbc.OracleDriver");
//2.连接到数据库(连接以后创建了Connection对象)
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
String username = "zqk";
String password = "zqk123";
//getConnection()方法,查找并且尝试连接到数据库,如果不成功将出现异常。
//url前面写错了提示找不到驱动,后面写错了,提示找不到服务器
Connection conn =
DriverManager.getConnection(url, username, password);
//创建“语句”对象,Statement本身是一个接口
Statement st = conn.createStatement();
//执行SQL
String ddl = "create table robin_demo_zqk("
+ "id number(7),"
+ "name varchar2(100)"
+ ")";
boolean b = st.execute(ddl);
//返回结果:true 表示有结果集,false表示没有结果集
//创建失败就抛出异常了:名称已由现有对象使用
//如何判断结果:如果没有异常,则创建成功
//第一次利用java创建了一张表
System.out.println(b);
//关闭数据库连接
conn.close();
}
}
————————————————————————————————————————————————————
与DDL连接数据的道理相同,只是SQL语句有所改变。
/*
* 执行DML语句
*
*/
package cn.tedu.jdbc.day01;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
/*
* 执行DML语句
*
*/
public class Demo02 {
public static void main(String[] args) throws Exception {
//1、注册(加载)数据库驱动
Class.forName("oracle.jdbc.OracleDriver");
//2、连接数据库
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
String username = "zqk";
String password = "zqk123";
Connection conn =
DriverManager.getConnection(url,username,password);
//3、创建Statement语句对象
Statement c = conn.createStatement();
//4、注意加空格
String dml = "insert into robin_demo_zqk "
+ "(id,name)"
+ "values"
+ "(4,'JERRY')";
//5、处理执行结果
int d = c.executeUpdate(dml);
System.out.println(d);
//6、关闭数据库
conn.close();
}
}
我们可以看到DDL和DML两段代码的区别就在于SQL语句部分,其余的部分基本都是相同的,所以我们产生了一个想法,就是将共同的部分进行一个封装处理。
————————————————————————————————————————————————————
还是DDL和DML连接数据库的套路。
package cn.tedu.jdbc.day01;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/*
* DQL语句
*/
public class Demo03 {
public static void main(String[] args) throws Exception {
//注册驱动
Class.forName("oracle.jdbc.OracleDriver");
//连接数据库
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
String user = "zqk";
String password = "zqk123";
Connection conn =
DriverManager.getConnection(url, user, password);
//创建Statement语句
Statement st = conn.createStatement();
//执行SQl
String sql = "select id,name "
+ "from robin_demo_zqk ";
//rs游标自动到第一个,next()移动游标到下一位,
//并且检查游标有没有数据,如果有数据则返回true
ResultSet rs = st.executeQuery(sql);
//处理结果 ...
//rs结果集中包含一个游标,游标默认在结果集的第一行之前
//next()跟while配合使用的使用只能调用一次
//rs.next():移动结果集游标到下一行,检查是否有
//数据,如果有返回true,否则返回false
while(rs.next()) {
//getxxx(列名):返回结果集中当前行中指定
//列名的数据
int id = rs.getInt("id");
String name = rs.getString("name");
//输出查询结果
System.out.println(id+":"+name);
}
//关闭连接
conn.close();
/*
* 此时jdbc一个最大的问题就体现出来了,就是连接管理。
* 我们需要把程序中的通用部分进行封装,管这部分代码叫
* 连接管理
*/
}
}