向Oracle中插入记录时,出现“Oracle.DataAccess.Client.OracleException ORA-00933 ”错误
错误信息的弹出框
异常的内容:
“Oracle.DataAccess.Client.OracleException”类型的未经处理的异常在 DBFSR.dll 中发生 其他信息: External component has thrown an exception.
捕获的异常信息:
Oracle.DataAccess.Client.OracleException ORA-00933: SQL 命令未正确结束 at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx*
解决方案:
本人的Oracle语句为
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into HP_TABLE(");
strSql.Append("TS_ID,DATE_SOLAR,DATE_LUNAR,HP_FID,HOUR_00,"+
"HOUR_01,HOUR_02,HOUR_03,HOUR_04,HOUR_05,HOUR_06,HOUR_07,HOUR_08,HOUR_09,HOUR_10,"+
"HOUR_11,HOUR_12,HOUR_13,HOUR_14,HOUR_15,HOUR_16,HOUR_17,HOUR_18,HOUR_19,HOUR_20,"+
"HOUR_21,HOUR_22,HOUR_23,\"SUM\",\"AVG\",G1_T,G1_L,G2_T,G2_L,D1_T,D1_L,D2_T,D2_L,UPDATE_TIME,DETAILS)");
strSql.Append(" values (");
strSql.Append(":TS_ID,:DATE_SOLAR,:DATE_LUNAR,:HP_FID,:HOUR_00,"+
":HOUR_01,:HOUR_02,:HOUR_03,:HOUR_04,:HOUR_05,:HOUR_06,:HOUR_07,:HOUR_08,:HOUR_09,:HOUR_10," +
":HOUR_11,:HOUR_12,:HOUR_13,:HOUR_14,:HOUR_15,:HOUR_16,:HOUR_17,:HOUR_18,:HOUR_19,:HOUR_20," +
":HOUR_21,:HOUR_22,:HOUR_23,:\"SUM\",:AVG,:G1_T,:G1_L,:G2_T,:G2_L,:D1_T,:D1_L,:D2_T,:D2_L,:UPDATE_TIME,:DETAILS)");
经检查,发现是关键字冲突,在上面“AVG”关键字与系统的函数冲突,只将上面的AVG加上引号还不够,还要将下面的AVG参数名加上引号。
PS,其实经过作者测试,SUM的参数名可以不加引号。
...
":HOUR_21,:HOUR_22,:HOUR_23,:\"SUM\",:\"AVG\",:G1_T,:G1_L,:G2_T,:G2_L,:D1_T,:D1_L,:D2_T,:D2_L,:UPDATE_TIME,:DETAILS)");
...
这样即可解决问题。进行正常的插入操作。
经验:
(1)对于较长的sql语句,最好将其粘贴到Word中进行分段识别,否则很难保证正确。
(2)一般写作的SQL语句,可以现在如PL/SQL中进行测试正确与否。
(3)平时要多SQL语句,包括高级的操作语法,如建立规则,事物,挎库数据转移,触发,数据表设计,实时更新数据的触发与操作。以及典型的即时通讯,并发操作,海量查询,索引,备份与恢复,安全等内容。
向Oracle中插入记录时,出现“Oracle.DataAccess.Client.OracleException ORA-00933 ”错误的更多相关文章
- 向oracle中插入date时,持久层sql怎么写???
public class EmpDao { public void addEmp(Emp emp) throws SQLException { QueryRunner runner = new Que ...
- 向mysql数据库中插入数据时显示“Duplicate entry '1′ for key ‘PRIMARY' ”错误
错误情况如题,出现这个错误的原因十分简单: 很明显,这是主键的问题. 在一张数据表中是不能同时出现多个相同主键的数据的 这就是错误的原因,解决的方法: 1.可以将这张表设置成无主键(mysql支持,其 ...
- MyBatis在Oracle中插入数据并返回主键的问题解决
引言: 在MyBatis中,希望在Oracle中插入数据之时,同一时候返回主键值,而非插入的条数... 环境:MyBatis 3.2 , Oracle. Spring 3.2 SQL Snipp ...
- for循环往Oracle中插入n条数据,主键自增
1.主键自增实现方法:http://www.cnblogs.com/Donnnnnn/p/5959871.html 2.for循环往Oracle中插入n条数据 BEGIN .. loop insert ...
- 在Oracle中更新数据时,抛出:ORA-01008: not all variables bound
在Oracle中更新数据时,抛出了一个 :ORA-01008 not all variables bound, 我的理解是不是所有的变量/参数都有边界,不懂: 后来知道了,原来是“不是所有变量/参数都 ...
- java.sql.date与java.util.date区别以及数据库中插入带时分秒的时间
java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.Da ...
- MyBatis插入记录时返回主键id的方法
有时候插入记录之后需要使用到插入记录的主键,通常是再查询一次来获取主键,但是MyBatis插入记录时可以设置成返回主键id,简化操作,方法大致有两种. 对应实体类: public class User ...
- 在MySQL向表中插入中文时,出现:incorrect string value 错误
在MySQL向表中插入中文时,出现:incorrect string value 错误,是由于字符集不支持中文.解决办法是将字符集改为GBK,或UTF-8. 一.修改数据库的默认字符集 ...
- 触发器修改后保存之前的数据 表中插入数据时ID自动增长
create or replace trigger t before update on test5 for each rowbegin insert into test55 values (:old ...
随机推荐
- Javascript表格中搜索
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- hdu 1275 两车追及或相遇问题
思路:这里有2种情况: 一种是相遇:满足关系是 (va+vb)*t=L*(2*n-1) 一种是追及: 满足关系是 |va-vb|*t=L*(2*n-1) 这样求出2种情况的时间,在排序就可以了…… 链 ...
- mac下安装mysql 连接时候报错 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
http://segmentfault.com/q/1010000000094608 同样的问题,先在网上搜了下其他人解决这个问题的方法,是去修改mysql.cnf文件添加mysql.sock文件路径 ...
- cojs 奈特 题解报告
才知道knight念奈特,而不念科耐特 这个题显然是一个数据结构题目,我搬运的CF上的题 CF的题解好长超长哒,而且可以在线,但是并不能看懂 于是自己想了一个一种做法A掉了,唯一的缺陷就是做法有些繁琐 ...
- cojs 简单的最近公共祖先 解题报告
我曾经自己想过每考试一次就从考试题中找找idea来出题 这次又找到了一个,先不管原来的考试题是什么 考试题中其中的一部分就是今天的这道题目啦 当时考场上自己比较傻,没有注意到有用的性质,套用了之前黑白 ...
- C#五层架构
UI Business Logic Layer Business Rule Layer Data Access Layer Data Definition Layer 简单工厂模式 simple fa ...
- 利用BBRSACryptor实现iOS端的RSA加解密
背景 RSA这种非对称加密被广泛的运用于网络数据的传输,但其在iOS上很难直接实现,BBRSACryptor框架通过移植openssl实现了iOS端的RSA,本文将介绍如何使用BBRSACryptor ...
- 安装nginx创建错误
./configure: error: the HTTP gzip module requires the zlib library. 解决: yum install -y zlib-devel -- ...
- StaggeredGridLayoutManager
Class Overview A LayoutManager that lays out children in a staggered grid formation. It supports hor ...
- TUXEDO错误解决方案
错误1: root@tfjus:/opt/tuxedo/simpapp# buildclient -f simpcl.c -o simpcl simpcl.c: In function 'main': ...