今天工作遇到了几个小问题,趁现在有时间,记录下来。备考
1, 不同数据的库的传递数据问题:
以前没有用过多个库之间的数据传递,今天遇到为了省事,直接将两个表结构相同的数据传递。
比如从一个库中的表A取得几条数据插入到另一个数据库的表A中:
insert into 库1.A
select * from 库2.A
where code_id ='A6'
在运行中出现一个小问题,如果表中的字段过多会插入操作失败
2,oracle数据大小超过字段的最大值 问题:
昨天下班前的一个问题,在网络上找到了原因:
(摘录:
http://rosecoil.spaces.live.com/blog/cns!857DC42FFBD46EE0!412.entry?_c=BlogPart
中却出现问题,应该是Oracle的jdbc的问题,即使在现在的oracle9i中仍然出现。
在Oracle中的varchar2字段类型的最大长度是4000。如果你定义了一个varchar2(4000)的字
段,在java语言中使用PreparedStatement的setString()方法插入或更新该字段,一旦你放
进库中的内容是2001个英文字符,或者667个中文字符,数据库立即抛出SQLException异常,
报错:...数据大小超过字段的最大值....
解决方法是对varchar2字段定义超过2000长的字段,改用setCharacterStream()方法。例如:
String content = "mycontent";
String strSQL = "INSERT INTO mytable(id, content) VALUES( ? , ? )";
PreparedStatement stmt = conn.prepareStatement( strSQL );
stmt.setString( 1, 'net7b.com' );
// can't use setString() method if your content's length upto 2000
stmt.setCharacterStream( 2, new StringReader( content, content.length() ) );
stmt.executeUpdate();
......
以上问题在long字段类型中也会出现。
)
3. 中文数据作为查询条件传递到后台SQL出现不能识别,和模糊查询的时候“%”被解析成其他符号("20")
也是前几天的问题,今天又出现了
解决办法是在jsp页面通过condition = escape(condition)将代码转换,
并且替换百分号
while(condition.indexOf("%")>=0){
condition = condition.replace("%","/");
}
在java中取得数据后再通过自己写的类方法转换回去
if((condStr.split("/")).length>2)condStr = UtilTool.unescape(condStr.replaceAll("/","%"));
=========
赫赫,不错,今天终于写了不少东西