JSP和Oracle数据库连接问题集锦

白小宫沫

白小宫沫

2016-02-19 15:11

下面请跟着图老师小编一起来了解下JSP和Oracle数据库连接问题集锦,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

用ORACLE9i、oracle8、有很长的一段时间,我把用于JSP中需要注意的问题在这里写出来,仅供大家参考了。

一、如何去处理Clob、BLOB的大类型

CLOB可用于存放大文本数据,最多可存储4GB数据,在应用开发中比较常见.java提供的sql.Clob类与之对应.它提供两个方法来读取Clob的数据:

getCharacterStream() 方法返回按unicode编码的输入流(java.io.Reader对象)

getAsciiStream() 方法返回按ASCII编码的输入流(java.io.InputStream对象)

所以如果你的数据库中有可能存储中文字符的话,就要使用前一个方法.

现在举一个实际的例子,让我一步步学习如何使用CLOB.

首先,创建一个含CLOB字段的表:

create table test (id INTEGER, content clob);

接下来, 我们通过JSP往这张表里插入一条记录,然后再获取显示它.

插入操作:

以上需要注意的几点是:

1)clob类型的数据不能直接insert,要先通过empty_clob()方法给它分配一个locator(同理,blob的用empty_blob()函数分配locator).然后把它select出来(此时它当然没有数据,但结果集不是空的),得到一个Clob的对象,修改该对象的内容让它满足我们的需要,再通过update方法更新该行记录.

2) 通过select修改含lob类型的记录时一定要锁定该行(通过for update关键字实现),否则oracle会报错.

3) 刚插入的记录就select for update, 会出现"违反读取顺序"错误,解决办法是将自动提交功能置为false,即不允许自动提交,然后commit它,再select,就可以了. 这就是上面那段代码里//*两行的作用.

下面,我们将刚插入的记录从数据库中读取出来并显示之:

二、编码问题

因为JAVA的开发者是老外,所以他们对中文的支持并不是太好,这一点让不少的我们感到很是头痛,也就是我们通过说的汉字编码问题吧,关于一些汉字编码的规范我就不多说了,我主要是谈谈在和oracle数据库连接时的一些小问题,不过这些小问题很是让人头痛的。

1、在插入到数据库中的中文问题要转换成编码

2、从数据库中读到中文又要转换成编码

让我们看一个编码的JAVA代码:

  //ECov.java

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

  import java.io.UnsupportedEncodingException;

  public class ECov

  {

  public static String asc2gb(String asc){

  String ret;

  if(asc==null)return asc;

  try{

  ret=new String(asc.getBytes("ISO8859_1"),"GB2312");

  }

  catch(UnsupportedEncodingException e){

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

  ret=asc;

  }

  return ret;

  }

  public static String gb2asc(String gb){

  String ret;

  if(gb==null)return gb;

  try{

  ret=new String(gb.getBytes("GB2312"),"ISO8859_1");

  }

  catch(UnsupportedEncodingException e){

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

  ret=gb;

  }

  return ret;

  }

  public static int byte2int(byte b){

  return ((-1)24)&b;

  }

  }

其实这段代码的意思也就是把两种方法合而为一了。

在进行数据库插入时要用ECov.gb2asc(arg),要在读时要用ECov.asc2gb(arg)。其中最关键的一点就是Oracle好像只认识ISO8859_1这种格式的编码吧(仅是我的想法)。

三、一些小细节

1、就是setAutoCommit(true or false),就是我们在sqlPlus中常用commit()的功能,如果是用true,就不要用commit(),否则还是用commit()方法的。

2、对日期类型的处理,其实他并不是想象中setDate(),getDate()那么简单的,中间有很大的漏洞。大家自己多调试就会觉得有很多的乐趣的。

3、在和数据库中最好是采用连接池技术,用标准的J2EE的环境,用简单的JNDI技术,是很好的一种方法的

展开更多 50%)
分享

猜你喜欢

JSP和Oracle数据库连接问题集锦

Web开发
JSP和Oracle数据库连接问题集锦

Oracle数据库和JSP连接要注意问题精粹

Web开发
Oracle数据库和JSP连接要注意问题精粹

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

jsp连接数据库oracle

Web开发
jsp连接数据库oracle

Oracle数据库和JSP连接要注意的一些问题

Web开发
Oracle数据库和JSP连接要注意的一些问题

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

JSP连接Access数据库

Web开发
JSP连接Access数据库

用JSP连接数据库

Web开发
用JSP连接数据库

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

关于jsp配置问题的详细解读

关于jsp配置问题的详细解读

Excel详细介绍SUMPRODUCT

Excel详细介绍SUMPRODUCT
下拉加载更多内容 ↓