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() ...
随机推荐
- MTK
1.mt_boot_init->boot_linux_from_storage->boot_linux->boot_linux_fdt
- 三方贸易-drop ship
一.三方贸易的简单理解 三方贸易:即当客户向我方下达采购订单要求订购货物,我方再向供应商下达相同采购订单,并要求供应商直接送货至客户处的交易形式,待交易完成后,由供应商向我方开具应收票据,我方向客户开 ...
- 文件重定向函数freopen
头文件:stdio.h FILE *freopen( const char *filename, const char *mode, FILE *stream ); 参数说明: filename:需要 ...
- Codeforces Round #272 (Div. 2) C. Dreamoon and Sums (数学 思维)
题目链接 这个题取模的时候挺坑的!!! 题意:div(x , b) / mod(x , b) = k( 1 <= k <= a).求x的和 分析: 我们知道mod(x % b)的取值范围为 ...
- Android EditText截获与监听输入事件
Android EditText截获与监听输入事件共有2种方法: 1.第一种方法:使用setOnKeyListener(),不过这种方式只能监听硬键盘事件. edittext.setOnKeyLi ...
- R语言中strptime返回值永远为NA的问题
调用前加上以下代码,即可解决 Sys.setlocale("LC_TIME", "C");
- 《Qt 实战一二三》
简介 "我们来自Qt分享&&交流,我们来自Qt Quick分享&&交流",不管你是笑了,还是笑了,反正我们是认真的.我们就是要找寻一种Hold不住的 ...
- asp.net限时发送手机验证码
html代码 <p> <strong>手机验证码:</strong> <asp:TextBox ID="code" runat=" ...
- C语言之字节对齐
在C语言编程中,有时为了达到减少运行的时间的目的,需要浪费一些空间:而有时为了节省空间,使它的运行时间增长.而字节对齐则是为了访问效率,用空间换取时间. 要掌握字节对齐,首先得明确一下四个概念: 1. ...
- Mybatis学习——传递Map型参数
Spring整合Mybatis调用 public boolean editItemSales(int i_id, int i_sales) { Map<String, Object> ma ...