最近刚做完mysql的各种需求,项目要满足oracle数据库,于是走上了漫漫的踩坑之路,同行可以看看以免踩坑……
第一条:
oracle建表的时候不需要在建表sql语句后指定默认字符集 DEFAULT CHARSET=utf8 ,为什么呢?
因为oracle没有表级别的字符集,在建库的时候就已经定好了
第二条 :
oracle建表的时候自增主键不能用 AUTO_INCREMENT,为什么呢?
因为这个是mysql的用法,其他数据库自增主键用法也不同,oracle在所有里面自增字段最麻烦,需要额外的执行命令让你的字段自增
第三条:
用java程序执行建表的时候,sql以英文分号结束,提示 建表失败!失败原因:ORA-00911: 无效字符 ,为什么?
查资料显示 preparedStatement里边的SQL语句不需要";"标志结束。但是如果你单独把sql粘出来放在命令窗口运行,那是没问题的
这个问题已经验证
第四条:
今天2月22日,我被项目里面做数据集的oracle支持搞的头大,很大,数据集其实就是一些注册的表的各种信息存进另一些本地表中,逻辑稍微多一些,当这些保存完之后,重新做查询,问题就来了,一直查不出数据///////////////////////////////////逻辑检查了一遍又一遍,一遍遍调试,都是失败结果,其中一些譬如这样的,为了简便我查询所有的
select * from user_tab_comments where table_name = 'b',这一句查询表b的一些数据库属性信息,譬如表名,字符编码,声明等等
同样的
select * from user_tab_columns where table_name = 'b',这句查这张表的列属性信息,譬如多少列,列名,列类型等等
坑出现了
需求上表名是自己手动输入的作为建表的表名,比如我输入的b,建表逻辑执行完之后,执行这两个sql(实际sql复杂些),结果集永远为空,调试,把sql打印出来贴到数据库客户端执行,报错,猜想,表名大小写,因为之前记得oracle的表名都会自动大写,将b改为B,查询成功,这个坑发现的不难,接下来第二个坑,因为手动输入表名一般英文字母不会大写,建表语句create table b……这句在oracle执行后,表名将会是B,select * from b,也是能查出数据的,但是,oracle的一些系统表,比如上面的user_tab_comments ,user_tab_columns,在记录一些表的信息时,记录表名都是大写,而上面两句的table_name的值是查询的另一张表的某个字段值,这个字段值在前面保存时,保存的还是原生的手动输入的b,未做处理。
总的来说要注意这么几点:
1、oracle的表名(包括列名)在数据库中都是大写
2、java执行的sql语句表名、列名可以小写,但是执行完了之后再oracle依然是大写
3、oracle的系统表,比如上一篇提到的几个系统表,保存了业务表(用户建的表)的信息,这些信息保存的表名列名等字段值都是大写,因此查询这些表的时候条件语句的值一定要注意小写转大写(特别是条件语句中表名是变量字符串的,要处理为大写)
4、正常的查询业务表可以不关注大小写,但是,为了少踩点坑,大写是最好的习惯

第十五篇:java操作oracle踩坑之旅的更多相关文章

  1. 微信小程序之mpvue+iview踩坑之旅

    因为之前参照微信的原生的文档写过一些小程序的demo,写的过程比较繁琐,后来出了美团的mpvue,可以直接使用vue开发,其他的不作对比,这篇文章记录一下踩坑之旅. 参照mpvue http://mp ...

  2. 《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)

    1.简介 今天这一篇宏哥主要是讲解一下,如何使用list容器来遍历多选按钮.大致两部分内容:一部分是宏哥在本地弄的一个小demo,另一部分,宏哥是利用JQueryUI网站里的多选按钮进行实战. 2.d ...

  3. 《手把手教你》系列技巧篇(二十五)-java+ selenium自动化测试-FluentWait(详细教程)

    1.简介 其实今天介绍也讲解的也是一种等待的方法,有些童鞋或者小伙伴们会问宏哥,这也是一种等待方法,为什么不在上一篇文章中竹筒倒豆子一股脑的全部说完,反而又在这里单独写了一篇.那是因为这个比较重要,所 ...

  4. 《手把手教你》系列技巧篇(六十五)-java+ selenium自动化测试 - cookie -下篇(详细教程)

    1.简介 今天这一篇,宏哥主要讲解:利用WebDriver 提供可以读取.添加和删除cookie 信息的相关操作方法.验证浏览器中是否存在某个cookie.原因是:因为基于真实的cookie 的测试是 ...

  5. 《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)

    1.简介 在使用appium写app自动化的时候介绍toast的相关元素的定位,在Web UI测试过程中,也经常遇到一些toast,那么这个toast我们这边如何进行测试呢?今天宏哥就分两篇介绍一下. ...

  6. 《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)

    1.简介 TestNG为日志记录和报告提供的不同选项.现在,宏哥讲解分享如何开始使用它们.首先,我们将编写一个示例程序,在该程序中我们将使用 ITestListener方法进行日志记录. 2.Test ...

  7. 跟我学SpringCloud | 第十五篇:微服务利剑之APM平台(一)Skywalking

    目录 SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking 1. Skywalking概述 2. Skywalking主要功能 3. Skywalking主要 ...

  8. Egret入门学习日记 --- 第十五篇(书中 6.1~6.9节 内容)

    第十五篇(书中 6.1~6.9节 内容) 好的,昨天完成了第五章. 今天来看第六章. 总结重点: 1.如何对组件进行分组? 跟着做: 重点1:如何对组件进行分组? 首先,选中你想要组合的组件. 然后点 ...

  9. java 操作Oracle 批量入库的问题

    java 操作Oracle 批量入库的问题 先说下我运行的环境: Windows7 64位操作系统 (四核)Intel i5-2300 CPU @2.80GHz 内存4G 硬盘1T Jdk1.6+My ...

随机推荐

  1. css reset初始化样式

    原文:https://www.cnblogs.com/caojiayan/p/6343917.html /* CSS Document */ html, body, div, span, object ...

  2. SQL Server中配置ODBC数据源

    单击“开始→windows系统→控制面板”,打开控制面板 单击“管理工具→ODBC数据源(32位)”打开ODBC数据源配置对话框 在数据源配置对话框中单击“系统DSN”选项卡下的“添加”按钮,创建数据 ...

  3. Delphi中关于菜单的几个技巧

    -- 1将菜单项移到菜单栏的最右边 在一些应用程序中,常把一些特殊的菜单项放在菜单栏的最右边(如WPS2000 中的"定制界面"菜单,一些应用程序的帮助菜单),这些菜单项放在菜单栏 ...

  4. lua执行的两种方式

    一.交互模式 二.脚本式 创建一个以lua结尾的文件,例如hello.lua文件内容 println("hello world")

  5. 安装zabbix需求环境

    yum install gcc gcc-c++ make mysql-server mysql-devel libcurl-devel net-snmp-devel php php-ldap php- ...

  6. [JZOJ 5129] 字符串

    题意:统计本质不同的串的个数. 思路: 显然后缀自动机,对于每个串建一个\(SAM\)统计即可. #include <bits/stdc++.h> using namespace std; ...

  7. Spring-Security (学习记录二)--修改为自己的登录页面

    目录 1.修改spring-security.xml配置文件 2.增加login.jsp页面 3.重启项目即可看到效果 1.修改spring-security.xml配置文件 <!-- auto ...

  8. 4.RabbitMQ Linux安装

    这里使用的Linux是CentOS6.2 将/etc/yum.repo.d/目录下的所有repo文件删除 先下载epel源 # wget -O  /etc/yum.repos.d/epel-erlan ...

  9. 3.RabbitMQ 第一个程序

    RabbitMQ消息服务器主要解决应用程序之间异步消息传输问题,传统的MQ分为点对点和主题与订阅,RabbitMQ使用Exchange(交换机)实现更加灵活的消息传递. 前面介绍过几个概念,Routi ...

  10. java系列(1/4)基础阶段-MySQL(2/13)

    本单元目标 一.为什么要学习数据库 二.数据库的相关概念 DBMS.DB.SQL 三.数据库存储数据的特点 四.初始MySQL MySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停 ...