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() ...
随机推荐
- Python 脚本生成测试数据,Python生成随机数据,Python生成大量数据保存到文件夹中
代码如下: import random import datetime import time dataCount = 10*100*100 #10M. codeRange = range(ord(' ...
- UI开发中的Unit test新工具:网页抓屏比较
在UI开发中,判断是否正常往往需要看到UI长的模样,所以一般的Unit test无法胜任. 现在有一款通过抓屏而后相素比较的方法,或许对于UI自动化测试能够起到比较好的改进效果. 具体请参见:http ...
- POJ (线段树) Who Gets the Most Candies?
这道题综合性挺强的,又牵扯到数论,又有线段树. 线段树维护的信息就是区间中有多少个人没跳出去,然后计算出下一个人是剩下的人中第几个. 我在这调程序调了好久,就是那个模来模去的弄得我头晕. 不过题确实是 ...
- UVa 11137 (完全背包方案数) Ingenuous Cubrency
题意:用13.23……k3这些数加起来组成n,输出总方案数 d(i, j)表示前i个数构成j的方案数则有 d(i, j) = d(i-1, j) + d(i, j - i3) 可以像01背包那样用滚动 ...
- 转:asmx迷10分钟升级成wcf熟手指南
前言:本文旨在帮助从未接触过wcf(.svc文件)的webservice开发人员,快速将传统的webService/asmx技术迁移到wcf.高手就不用浪费时间往下看了:) 以下所有操作均为vs201 ...
- matlab数据的导入和导出,以matlab工作区workspace为source和destination
MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入. 保存工作区可以通过菜单进行,也可以通过命令窗口进行. 数据导出 1. 保存整个工作区 选择Fil ...
- 【英语】Bingo口语笔记(47) - 关于马的表达
beat a dead horse 浪费口舌
- yii2.0 输出url 注册js css文件
//输出url <a href="<?= Url::to(['/users/login/login','id'=>5,'mark'=>true]) ?>&qu ...
- 【转】bash调试经验
原文网址:http://blog.csdn.net/yfkiss/article/details/8636758 bash是Unix/Linux操作系统最常用的shell之一,它非常灵活,和awk.c ...
- 【转】Bootloader之uBoot简介(转)
原文网址:http://blog.csdn.net/sadamoo/article/details/8139946 来自http://blog.ednchina.com/hhuwxf/1915416/ ...