JDBC连接Oracle数据库的问题
场景:最近做一个java web项目,使用jdbc连接Oracle数据库,遇到了两个问题。
问题1:jdbc连接不上Ubuntu Oracle服务器?
后来发现这个问题的原因是由于连接字符串写错了,修正以后如下所示:
public static Connection getConn() {
Connection conn = null;
try {
// oracle
// 1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver"); // 需要下载oracle
// JDBC的驱动包
// 2.得到链接
String url = "jdbc:oracle:thin:user@//IP/orcl"; // user是用户名,IP是服务器地址,orcl是数据库的名称
String user = "ji"; // 你ORACLE数据中一个用户名称
String password = "ji"; // 对应上面用户名称的密码
conn = DriverManager.getConnection(url, user, password); // 连接
System.out.println(conn);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
问题2:服务器连接成功后,从服务器上取不出数据?
刚接触Oracle数据库的应用,小白一枚,若是大师,请忽略。
(1)操作自信
先描述一下本人的做法:
服务器数据库为空,本地用oracle sql developer连接,连接后创建了一张表TABLE_USER,接着用INSERT语句添加了一条测试数据,为了测试插入数据是否成功,又用SELECT语句查询了一番,如下图所示:
初始时,数据表为空:

插入一条数据:INSERT INTO TABLE_USER(ID,USERNAME,PWD,STORE_ID) VALUES(1,'a','a',100)
再次查看数据表:(可以看到数据已经插入到数据表)

为了保险起见,再用SELECT语句验证一番:SELECT * FROM TABLE_USER 如下图所示:

经过上述步骤,确信数据已经准备好,可以进行Java代码读数据测试了。
(2)代码自信
java代码读取测试表数据,代码如下:
public static ResultSet getRs(Connection con, String sql, Object[] param) {
Connection conn = con;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql);
if (param != null) {
for (int i = 0; i < param.length; i++) {
pstmt.setObject(i + 1, param[i]);
}
}
rs = pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
public static List<Account> findAccount(String sql, Object[] param) {
Connection con = BaseDao.getConn();
ResultSet rs;
rs = BaseDao.getRss(con, sql, param);
List<Account> list = new ArrayList<Account>();
try {
while (rs.next()) {
Account ac = new Account();
String accountEmail = rs.getString("USERNAME");
ac.setAccountEmail(accountEmail);
list.add(ac);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return list;
}
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
代码执行时,在rs.next()处一直出错,原因是rs中没有数据。
于是乎不停的检查代码是否出错,一路调试,改变代码写法,重新在sql developer上再插入数据……无数次的修改,无济于事!!!
(3)挥泪如雨
搜索引擎搜了一遍又一遍,帖子看了一篇又一篇,方法试了一个又一个,却依然没有解决这个问题……
折腾了两天,暂时放弃了……
(4)柳暗花明
偶然一次服务器关机了,然后重启了,我再次去SELECT数据时,突然发现我的数据表是空的,瞬间明白了,什么叫COMMIT。
我竟不知道sql developer插入数据是在本地,若不提交服务器上是没有的。
下面就看一下这个千呼万唤始出来COMMIT:
just insert

insert & commit

就是这个commit按钮才能将数据提交到服务器。
(5)重要的事情说三遍
insert、update、delete语句一定要commit
insert、update、delete语句一定要commit
insert、update、delete语句一定要commit
JDBC连接Oracle数据库的问题的更多相关文章
- jdbc连接oracle数据库
/*** 通过改变配置文件来连接不同数据库*/package com.xykj.jdbc; import static org.junit.Assert.*; import java.io.Input ...
- jdbc连接oracle数据库问题
下面是JDBC连接oracle数据库流程: String dbURL = "jdbc:oracle:thin:@url:1521:service_name"; String use ...
- JDBC 连接Oracle 数据库,JDBC 连接Mysql 数据库
首先是JDBC 连接Oracle 数据库 package com.util; import com.pojo.UserInfo; import java.sql.*; public class DB ...
- JAVA通过JDBC连接Oracle数据库详解【转载】
JAVA通过JDBC连接Oracle数据库详解 (2011-03-15 00:10:03) 转载▼http://blog.sina.com.cn/s/blog_61da86dd0100q27w.htm ...
- jdbc连接oracle数据库字符串
jdbc连接oracle数据库有两种方式: 连接数据库SID 连接数据库service_name 当连接SID时,字符串如下: url::orcl1" password="xxxx ...
- JDBC连接Oracle数据库时出现的ORA-12505错误及解决办法
转载至http://www.blogjava.net/itspy/archive/2007/12/20/169072.html Oracle 问题描述:今天使用jdbc连接oracle 10.2.0. ...
- 简单的JDBC连接oracle数据库例子
java连接Oracle数据库 JDBC(Java Data Base Connectivity,java数据库连接),那么我们该如何用java进行数据库的连接呢. import java.sql.C ...
- JDBC 连接Oracle数据库 各个对象的理解
JDBC: 1. **代码实现:(连接oracle数据库) 1.导入驱动jar包 2.注册驱动 Class.forName("oracle.jdbc.driv ...
- Eclipse通过jdbc连接oracle数据库
首先要有包 然后,在项目中加载进去- 最后就是代码了 import java.sql.*;public class GetConn {public Connection getConnection() ...
随机推荐
- c#换ip代理源码
很多朋友都想如何提高自己的网站流量,可是都没有什么好的办法 经过很长时间的研究,在C#中实现了,当然了,这部分代码其中一部分是网上的,不是原创. using System; using System. ...
- STL笔记(3) copy()之绝版应用
STL笔记(3) copy()之绝版应用 我选用了一个稍稍复杂一点的例子,它的大致功能是:从标准输入设备(一般是键盘)读入一些整型数据,然后对它们进行排序,最终将结果输出到标准输出设备(一般是显示器屏 ...
- innodb锁之间的兼容性判断
检查锁与锁之间的兼容性 路径:/mysql-5.5.43/storage/innobase/lock/lock0lock.c 实现:见锁的强度比较 row 可理解为 lock 的锁模式 colum ...
- 如何将SD卡或者TF卡的debian系统刷入nand
1. 在windows端下载辅助文件: a) http://dl.cubieforums.com/loz/boot_partition/bootloader/cubie_nand_uboot_part ...
- 51nod1431 快乐排队
神???.我们可以发现无论怎么交换ai+i都是不变的.那么这样就可以了 #include<cstdio> #include<cstring> #include<cctyp ...
- Vim实现批量注释的方法
调试代码的时候,免不了要批量注释/取消代码注释,很多IDE都有快捷键将你选中的代码块批量注释/取消注释的功能,那么在Vim里面如何完成这个功能呢? 方法一 块选择模式 批量注释: Ctrl + v 进 ...
- volley(2) 参数code : or_barcode, pr_ismsd:false , method:GET
1. 来自于WHCombineBatchFragment.java /** * 当编辑框里面的内容完成的时候,自动的,同时获取服务器的批量数 */private void barcodeEnterEv ...
- OC 设计模式——单例模式
单例模式的作用:可以保证在程序运行过程,一个类只有一个实例,而且这个实例易于供外界访问.永远只分配一次内存给这个类.由于在调用alloc方法的时候,都会调用allocWithZone,所以要重写这个方 ...
- 07_js走路小游戏
<html> <head> <!-- 不做了,思路: 按enter键停止,将xs,ys替换为0,再次按,判断xs和ys是否为0,是的话,讲根据fx给xsys赋值. 实现鼠 ...
- web前端调试工具
1.firebug入门指南 http://www.ruanyifeng.com/blog/2008/06/firebug_tutorial.html 2. Console命令详解,让调试js代码变得更 ...