`
saiyaren
  • 浏览: 228258 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

前些阵子用oralce发现的些问题与大家分享

阅读更多

1.Oracle关键字解决办法

当使用pl_sql报出下面错误的时候:

ORA-01747: user.table.column, table.column 或列说明无效


如果报这个错误的时候,是因为我们执行的sql语句中有了oracle的关键字,所以会有这个错误,所以我们就用单引号给这个关键字引起来就没有问题了。
比如:

insert  into department(`id`,`dept_name`,`remark`,`uid`) values (1,'综合处','承担建设项目的管理等工作',1)


因为里面的uid是oracle的关键字,所以用单引号引起来执行就没有问题了。

2.Oracle连接不上解决方法


当控制台报如下错误时:

Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'


这说明我们的oracle的驱动连接不上数据库,但是我这时候已经明明的把驱动加到了项目的
/web-inf/lib/下了,可是还是报这个错误,这是为什么呢?
因为oracle的数据库我们把oracle的驱动(ojdbc14.jar)光加到我们的项目中去是没有用的,所以我们还需要把我们的这个oracle驱动加到我们的tomcat的lib下面,这样启动tomcat后就可以连接上我们的oracle数据库了,我用的是tomcat6,所以路径就是tomcat/lib/

3.oracle表名为关键字的错误

当报这个错误的时候:

ORA-00903:表名无效
或者
ORA-00903: invalid table name


这个都是表示我们的表名是无效的
因为我们的表名起为了oracle的关键字,所以是无效的
所以需要注意的是,在mysql往oracle移植的时候一定要注意在mysql中是否定义了oracle的关键字
用hibernate比较方便可以在.hbm中把table给改名,但是如果用纯jdbc去写的话,那么就麻烦许多了,需要针对与每个查询语句去修改一下

4.在oracle中插入数据
在oracle中插入数据需要给这个来插入序列,那么这个需要怎么做呢?
下面举个例子:

String sql = "insert into t_res_language_schools(id,name,introduction,school_url,address,status,create_by,"+"create_time,provider,provider_url) values(t_res_language_schools_seq.nextval,?,?,?,?,?,?,?,?,?)";



t_res_language_schools_seq.nextval是:序列的名字+nextval就可以了
上面插入的地方是把id给指定给序列

因为我之前一直在用mysql,mysql的id都是自增的,而oracle在插入的时候需要去插入序列去操作.

5.使用PLSQL Developer时,“ORA-12154: TNS:无法解析指定的连接标识符”问题的一个解决办法


当我们使用PL/SQL的时候,当报这个“ORA-12154:TNS:无法解析指定的连接标识符”问题的时候,像我的问题就是在单安装了oracle的客户端(oracle_client)的时候没有发现什么问题,因为这时只是默认的安装了一个客户端,当我们再继续装了一个服务端的oracle的时候,这个时候PL/SQL就 不知道默认的连接方式是什么了,现在一般可以连上本机了,但是远程的就连不上了,所以这时候我们要设置一下PL/SQL的连接方式,然后就可以正常连接了,设置如下:
比如出现错误后点确定进入PL/SQL的主界面,然后在主界面中点击:工具--首选项—连接
然后在右侧会看到oracle主目录名(自动检测为空名),然后我们选择oracle客户端的名字(OraClient10g_home1)点应用,重起PL/SQL就可以连接远程服务器和本地的了。
如图:


6.对Oracle序列的操作

序列名.NEXTVAL :指定下一个序列
序列名.CURRVAL :指定当前序列(注:这个必须在NEXTVAL产生序列后才可以使用)
例子:
Select 序列名.NEXTVAL from dual (产生序列,指定到下一个序列)
Select 序列名.CURRVAL from dual (产生序列后获取当前的序列)



7.用jdbc进行级联添加(ORACLE)

比如A是外键表,B引用A的id,C引用B的id
那么这样怎么去进行级联添加呢?
我们这个必须在一个事务里面去处理:
那么我们这里所遇到的问题就是如何把引用的id去注入,那么我来写下下面的语句,问题就在sql语句的写法上:

A_SEQ是A表序列 B_SEQ 是B表序列   C_SEQ是C表序列
Insert into A(id,a_name) values(a_seq.nextval,?)
Intsert into B(id,b_name,a_id) values(b_seq.nextval,?,a_seq.currval)
Insert into C(id,c_name,b_id) values(c_seq.nextval,?,b_seq.currval)


然后在执行jdbc的时候执行顺序也需要按照上面的这些语句的执行顺序来执行

8.Jdbc在Oracle中存储日期类型
当我们在数据库中插入一个日期类型的数值是是这样去插入

Insert into (id,create_time) values(example_seq,to_date(‘2009-01-03 9:25:15’,’ YYYY-MM-DD HH24:MI:SS’)
Commit;



注意(这里如果日期的格式是 2009-01-03也就是年月日的形式的直接后面的格式是yyyy-mm-dd就可以)

在jdbc中如果我们要插入这个日期类型的话,那么我们这里需要写的sql语句和这里的是一样的

String sql=”inert into (id,create_time) values(example_seq,to_date(?,’YYYY-MM-DD HH24:MI:SS’)”;

DBManager dbManager = new DBManager();
Connection conn = dbManager.GetConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, DateUtil.getCurrDateTime());


//这里我们要注意的是,我们在注入我们日期的时候不需要把这里setdate,因为我们在存储的时候就是以字符串的形式储存的,所以这里,直接用字符串保存就可以了,这里setdate是一个误区,这个问题不知道我理解的对不对,但是确实如果是setdate就set不进去,这里如果有人理解比较深刻的可以帮我解释下!

9.ORA-00913: 值过多

当oracle中报“ORA-00913: 值过多”错误的时候,那么说明我们的sql语句中有了问题,
一般是我们所需要穿的参数和我们需要保存的字段这里的数量不一致所导致的,所以就产生了一对多,或多对一的现象,下面举个例子:

Insert into (id,name,sex,create_time) values(user_seq,?,?,?)


比如我们sql是这样写的,前面要插入的值是3个,而后面所传入的参数变成了4个,那么在这个时候多出来的一个参数就不知道指定给谁了,所以就会报这个值过多的错误了。
所以我们这里需要把上面的sql语句改为

Insert into (id,name,sex,create_time) values(user_seq,?,?)


这样就可以对应上了


我上面用的是我在用oracle开发的时候发现的一些问题,与自己的理解方式和解决方法,不知道怎么理解对与不对,希望大家指点以后还会继续把发现的问题贴到博客中与大家分享!

 

  • 大小: 49.9 KB
分享到:
评论

相关推荐

    关于对称阵子的实验

    "对称阵子的实验" 本实验的主要目的是通过 MATLAB 编程,熟悉电基本阵子和对称阵子的辐射特性,了解影响对称阵子辐射的因素及其变化对辐射造成的影响。 首先,电基本振子(Electric Short Dipole)是一种理想的...

    晏殊破阵子教案.doc

    晏殊破阵子教案.doc

    混沌阵子检测的相关文献

    混沌阵子理论在微弱信号检测中的应用,混沌方面的文献

    5G 192天线阵子的32TR AAU与64TR AAU性能差异.docx

    本文以192天线阵子的32TR AAU(Active Antenna Unit)与64TR AAU为例,探讨两者之间的性能差异。 首先,32TR AAU通常采用16H2V(16个水平天线,2个垂直天线)的布局,而64TR AAU则采用64个TRx通道,这使得64TR AAU...

    对称阵子天线matlab.pdf

    在MATLAB中,可以使用以下代码来模拟对称阵子天线的辐射特性: 首先,需要定义自由空间的波长lamda和相移常数k。然后,使用for循环来计算方向图中的每个角度下的辐射电场强度fe。 在辐射电阻部分,使用Si和Ci函数...

    全域基函数计算半波阵子天线的电流分布_全域基函数_矩量法全域基函数_矩量法_

    总的来说,使用全域基函数的矩量法是一种强大的工具,可以有效地处理复杂的天线设计问题,特别是对于半波阵子天线的电流分布计算。这种计算方法不仅有助于理解天线的工作原理,而且对于优化天线性能和设计新型天线...

    改写破阵子600精选.doc

    8. **选材与扩写**:写作指导部分提到丰富材料的重要性,指出积累和选择合适的素材是提升文章质量的关键,提供了选材和用材的思考方法。 9. **文化与历史**:《破阵子》的改写不仅是文学创作,也是对历史文化的传承...

    Fortran求逆矩阵子程序.pdf

    Fortran求逆矩阵子程序.pdf Fortran是高性能计算领域中的一种编程语言,广泛应用于科学计算、工程模拟、数据分析等领域。今天,我们将探索Fortran中的一些重要概念和技术,围绕Fortran求逆矩阵子程序.pdf这个文件来...

    破阵子·为陈同甫赋壮词以寄之.ppt

    破阵子·为陈同甫赋壮词以寄之.ppt

    折合阵子J型天线diy图纸

    折合阵子J型天线

    mom.zip_MOM_矩量法_矩量法计算半波阵子

    在这个“mom.zip”压缩包中,包含了与矩量法计算半波阵子天线相关的多个脚本文件,我们可以逐一解析它们的内容和作用。 1. **DipoleAntenna.m**:这个文件很可能是用来定义和初始化半波阵子天线的参数,包括长度、...

    古诗词鉴赏高分秘籍之六:破阵子.docx

    - **马作的卢飞快,弓如霹雳弦惊**:使用了比喻的修辞手法,形容战马奔跑如同传说中的神马“的卢”一般迅速,弓箭发射时的声音像是霹雳一般惊天动地,形象地描绘出了战斗场景的激烈与壮观。 - **了却君王天下事,...

    【破阵子】原文、注释、译文、赏析.doc

    这首词的艺术风格独特,词人通过雄壮的军旅生活描绘,展现了豪放派词风,同时,词的结构布局巧妙,前九句描绘的壮丽场景与最后一句的现实感慨形成鲜明对比,强化了词人内心的痛苦与失望。 从辛弃疾的生活背景来看,...

    破阵子_精美学习课件ppt

    - “八百里分麾下炙,五十弦翻塞外声”:形象地展示了军营中将士们分享美食、演奏边塞歌曲的画面,展现了团结与士气。 - “马作的卢飞快,弓如霹雳弦惊”:通过对战场上的马匹和弓箭的形象描写,展现出战斗场面的...

    改写破阵子600.doc

    《破阵子》是中国古代诗词中的一首著名词作,由辛弃疾所创作,充满了壮志豪情和对国家的忠诚。这篇文档中的内容是对原词的改写和扩写,通过不同的视角和情境,展现了词中所蕴含的情感和主题。 在第一篇改写中,作者...

    七年级语文下册古代诗词三首之破阵子PPT教案.pptx

    总结:这篇《破阵子》PPT教案主要讲解了辛弃疾的代表作《破阵子》,揭示了词人在南宋时期的壮志与哀愁,通过词句分析,展现了词人深沉的爱国情感和对战场的炽热记忆,同时也反映出当时政局的无奈与个人理想的失落。...

    1破阵子——学习ppt课件

    1破阵子——学习ppt课件

    matlab.zip_matlab矩量法_电流 分布_矩量法计算半波阵子

    本文将深入探讨使用MATLAB实现矩量法(Method of Moments,MoM)来计算半波阵子天线的电流分布。矩量法是一种常用的方法,用于求解电磁场问题,特别是当涉及复杂几何形状和结构时。 首先,我们来理解什么是矩量法。...

    《破阵子》原文、注释、译文、赏析.doc

    《破阵子》是南宋著名词人辛弃疾创作的一首词,以其豪放的风格和深沉的情感展现了词人的壮志豪情与无尽感慨。这首词是辛弃疾寄给志同道合的友人陈同甫的作品,表达了他们共同的抗金抱负和对恢复国家统一的渴望。 词...

    HTML VS编译器 CODE/HTML

    我自己下的 前些阵子为了下一个编译器就花了我好些时间

Global site tag (gtag.js) - Google Analytics