我是个java初学者,目前在跟着视频教材学习。
在视频教程里有一个《BBS项目》,数据库用的是MySQL。其中一张基本表里,使用了数据类型text存储BBS中文章的正文信息。
因为我之前只接触过Oracle,所以想用Oracle来作数据库。在网上搜索资料以后,建表时使用了Clob类型来对应例子程序中的text类型。
然后发现clob是不能直接用insert来插入字符串的。看了一些资料,找到了一个通过代码来插数据的办法。大概是先插空数据EMPTY_CLOB()进表。然后将数据取出,通过bufferwriter直接往这个字段上写字符串。
基本代码是下面这样的:
*************************
conn.setAutoCommit(false);
//第一步:插入一个空的CLOB
String sql1="insert into news(content,id) values (EMPTY_CLOB(),'1')";
PreparedStatement ps1=conn.prepareStatement(sql1);
ps1.executeUpdate();
ps1.close();//第二步:取出该CLOB
String sql2="select content from news for update";
PreparedStatement ps2=conn.prepareStatement(sql2);
ResultSet rs2=ps2.executeQuery();
while (rs2.next()){
oracle.sql.CLOB clob=(oracle.sql.CLOB)rs2.getClob(1);
BufferedWriter out=new BufferedWriter(clob.getCharacterOutputStream());
String content="1234";//假定这是新闻的内容,当然可以也可以是其他的内容
out.write(content,0,content.length());
out.close();
}
conn.commit();
*************************我现在的问题是这样的:
1、我之前工作时,项目组有严格规定:修改数据不能用for update。理由是容易造成死锁。那么请问上面的代码是否有造成死锁的隐患呢?
2、在现实的项目中,一般是如何存储像文章正文这样的信息呢?是不是并不通过数据库来存储?如果通过数据库存储的话,是使用clob数据类型么?请各位高手指点一下吧,多谢!
PS:对不起,我第一次发帖,不知道怎么给分。(而且好像我之前下载资料都把分下载光了)
在视频教程里有一个《BBS项目》,数据库用的是MySQL。其中一张基本表里,使用了数据类型text存储BBS中文章的正文信息。
因为我之前只接触过Oracle,所以想用Oracle来作数据库。在网上搜索资料以后,建表时使用了Clob类型来对应例子程序中的text类型。
然后发现clob是不能直接用insert来插入字符串的。看了一些资料,找到了一个通过代码来插数据的办法。大概是先插空数据EMPTY_CLOB()进表。然后将数据取出,通过bufferwriter直接往这个字段上写字符串。
基本代码是下面这样的:
*************************
conn.setAutoCommit(false);
//第一步:插入一个空的CLOB
String sql1="insert into news(content,id) values (EMPTY_CLOB(),'1')";
PreparedStatement ps1=conn.prepareStatement(sql1);
ps1.executeUpdate();
ps1.close();//第二步:取出该CLOB
String sql2="select content from news for update";
PreparedStatement ps2=conn.prepareStatement(sql2);
ResultSet rs2=ps2.executeQuery();
while (rs2.next()){
oracle.sql.CLOB clob=(oracle.sql.CLOB)rs2.getClob(1);
BufferedWriter out=new BufferedWriter(clob.getCharacterOutputStream());
String content="1234";//假定这是新闻的内容,当然可以也可以是其他的内容
out.write(content,0,content.length());
out.close();
}
conn.commit();
*************************我现在的问题是这样的:
1、我之前工作时,项目组有严格规定:修改数据不能用for update。理由是容易造成死锁。那么请问上面的代码是否有造成死锁的隐患呢?
2、在现实的项目中,一般是如何存储像文章正文这样的信息呢?是不是并不通过数据库来存储?如果通过数据库存储的话,是使用clob数据类型么?请各位高手指点一下吧,多谢!
PS:对不起,我第一次发帖,不知道怎么给分。(而且好像我之前下载资料都把分下载光了)
解决方案 »
- 关于struts2标签的问题?
- ibatis里面都啥意思?
- 使用struts1.3,如何从一个action转向另一个action?
- sgip java实现 序列号中的源节点编号怎么编?
- 哪位大哥哥 给饿发一份中文版的api 谢谢了
- [求助]Dom4j解析XML问题
- Error creating bean with name 'transactionManager' defined in ServletContext resource这个问题如何解决啊?(急)
- 如何把框架应用程序换成基于网页打开的applet应用小程序
- 有关工作流OSWorkFlow的问题, 请达人帮忙
- 如何判断一个表达式正确与否
- java 音频检索
- JBOSS的2B问题。。老鸟来看看,谢谢了
2.一般就是clob 主要看什么项目 如果文章内容不常用 就写到文件里吧
多谢啦!不过,如果去掉for update,会不会造成不能写入的问题呢?因为我看代码是直接BufferWriter写到这个字段里去的。
我现在去试试看。多谢你了!