jdbc链接oracle取数据不正常:
我的数据库里面表是这个样子:select * from cat
catid catname catsex
2007111101 小猫1 1
2007111102 小猫2 0
2007111103 小狗3 1
还有一个同样的表catt,这个我是用来测试的
在链接oracle的时候没有问题,也就是说能够取得链接。
取得数据的代码如下: Statement stmt = null;
ResultSet rs = null;
ResultSetMetaData md = null;
TestClass test = new TestClass();//用来取得con的
stmt = con.createStatement();
rs = stmt.executeQuery("select * from cat");//这里的SQL如果改成select * from catt 就报ORA-00942: 表或视图不存在 错误!但是我明明数据库里面有catt这个表,
while (rs.next())
{
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
}这样报错:
AQ$DEF$_AQCALL
VIEW
Exception in thread "main" java.sql.SQLException: 无效的列索引
______________
我的表是cat一共3个字段,为什么只有
AQ$DEF$_AQCALL
VIEW这2个字段?而且字段也不对??我登录oracle的用户名是system,和这个有关系吗?。用PL/SQL登录就能执行上述2个SQL语句!在java里面就异常,
希望大家帮帮忙!
我的数据库里面表是这个样子:select * from cat
catid catname catsex
2007111101 小猫1 1
2007111102 小猫2 0
2007111103 小狗3 1
还有一个同样的表catt,这个我是用来测试的
在链接oracle的时候没有问题,也就是说能够取得链接。
取得数据的代码如下: Statement stmt = null;
ResultSet rs = null;
ResultSetMetaData md = null;
TestClass test = new TestClass();//用来取得con的
stmt = con.createStatement();
rs = stmt.executeQuery("select * from cat");//这里的SQL如果改成select * from catt 就报ORA-00942: 表或视图不存在 错误!但是我明明数据库里面有catt这个表,
while (rs.next())
{
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
}这样报错:
AQ$DEF$_AQCALL
VIEW
Exception in thread "main" java.sql.SQLException: 无效的列索引
______________
我的表是cat一共3个字段,为什么只有
AQ$DEF$_AQCALL
VIEW这2个字段?而且字段也不对??我登录oracle的用户名是system,和这个有关系吗?。用PL/SQL登录就能执行上述2个SQL语句!在java里面就异常,
希望大家帮帮忙!
解决方案 »
- DataInputStream 读取中文乱码,如何解决?
- 如何判断多个变量值不相同
- 40分求救:mysql 读取数据错误--java.sql.SQLException: Invalid value for getLong() - '2009-03-22 00:00:00'
- 求救~linux系统下用java编写一个内存测试程序,算出cpu的miss rate等一大堆数据
- 编码的 ISO-8859-1 和 iso8859-1 有什么不同?分别适用于什么环境
- 问一个其他程序运行java的问题
- 如何判断字符串是哪种编码方式
- 这个可以实现吗??
- java数据结构栈题目
- 请问JAVA的定时器如何设置
- 点击窗体上一个按钮后执行多个连续的费时操作,并同时在窗体上更新显示进度(用文本框),这时窗体会不响应.怎么用多线程解决这个问题?
- 关于陈宝峰Java视频教程录制内容的有奖调查
这里的SQL如果改成select * from catt 就报ORA-00942: 表或视图不存在 错误!但是我明明数据库里面有catt这个表这里是,你的catt表不是保存在system用户下的,即system的表空间的 Oracle在检索表时 ,是根据schema来检索的。而schema是个你的登陆用户下相关的
你可以在DOS下使用system登陆后执行这条这个指令:
select table_name from user_tbales;来查看system中所有的表,查看catt是否在这个schmea下2。AQ$DEF$_AQCALL
VIEW
Exception in thread "main " java.sql.SQLException: 无效的列索引
______________
我的表是cat一共3个字段,为什么只有
AQ$DEF$_AQCALL
VIEW这2个字段?而且字段也不对?? 这个问题,没见过,但是AQ$DEF$_AQCALL 这个好象是SYSTEM schema下的默认表,关注
你的catt表不是保存在system用户下的,即在system的表空间下没有catt表 。Oracle在检索表时 ,是根据schema来检索的。而schema是与你的登陆用户下相关的,可以理解成system的schema就是system
第二个问题:在while语句前,加上一句rs.first();试试看;或者在取每个字段内容的时候,不用
rs.getString(1),改用列名试试
还有con连接字符串是什么??
还有我怎样建立一个自己的用户来登录oracle,也就是不用system和sys登录?
============================================请检查一下PL/SQL端有没有 commit;
1,当在表中插入数据之后没有用COMMIT语句提交
2,你的GETSTRING()索引超出范 围
{
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
}
改成
while (rs.next())
{
System.out.println(rs.getString(0));
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
}就OK啦
select table_name from user_tbales;
看到system中所有的表,可以看到catt这个表
我建议你用数据库,最好创建一个USERS组下的用户,然后使用该用户的进行登陆和操作
create tablespace fam datafile '/oracle/oradata/myspace.dba' size 1000m;
create user testdba identified by testdba default tablespace fam;
grant create session to testdba;
grant resource to testdba;那么当我用testdba这个帐户,登录QL/SQL Developer
登录之后建立一个表:testtable
create table testtable
(
tableid varchar(2) not null,
tablename varchar(20),
tablecol3 varchar(10)
)在我应用java程序调用的时候,我的SQL语句为什么写成"select * from sys.testtable"才行???(select * from testtable 报错:ORA-00942: 表或视图不存在)
难道我登录建表之后这个表还是属于sys的?怎样才能解决不用在表明前面加sys?上面的问题都是由于在表的前面没有sys.的缘故!,不知道怎样建表不属于sys的?谢谢大家,帮帮忙!
我建表的时候如果
create table testdba.testtable
(
tableid varchar(2) not null,
tablename varchar(20),
tablecol3 varchar(10)
)那么在java调用的时候,用testdba取得链接,其中的SQL语句就可以查询到内容,
那么我现在想做的是我建表不用testdba.table的形式,要怎么做?
好了,结贴给分!