Oracle大文本clob数据类型的增删改查packagecommon;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.Reader;importjava.io.Writer;importjava.sql.Connection;
Oracle大文本clob数据类型的增删改查
package common;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
www.2cto.com
/*
*/
import oracle.sql.CLOB;
/**
* 连接数据库的类
* 最基础的类
*
*/
public class text {
/**
* 连接数据库常用的属性
*
*
*/
public String sDBDriver = "oracle.jdbc.driver.
OracleDriver";// 设置驱动
public String url = "jdbc:oracle:thin:@localhost :spe";// 设置数据库信息
public String sHint = "";
public ResultSet rs = null;
public Connection cOnn= null;
public Statement stmt = null;
public String user = "study";
public String pwd = "ok";
/**
* 加载配置文件读取信息
* www.2cto.com
*
*/
public text() throws IOException {
String userpath = System.getProperty("user.dir");
String filesparator = System.getProperty("file.separator");
String dbcOnfig= userpath + filesparator + "dbconfig.properties";
FileInputStream in;
in = new FileInputStream(dbconfig);
Properties dbp = new Properties();
dbp.load(in);
in.close();
this.url = dbp.getProperty("URL");
this.user = dbp.getProperty("USER");
this.pwd = dbp.getProperty("PASSWORD");
System.out.println("地址=" + dbconfig);
// System.out.println("真实="+this.url);
}
public String getSHint() {
return sHint;
}
public void setSDBDriver(String dbDriver) {
sDBDriver = dbDriver;
}
public String getSDBDriver() {
return sDBDriver;
}
public String getUrl() {
return url;
}
public void setUrl(String s) {
url = s;
}
public ResultSet getResultSet() {
return rs;
}
public boolean initialize(String url, String user, String pwd) {
this.url = url;
this.user = user;
this.pwd = pwd;
return initialize();
}
public boolean initialize() {// 默认构造方法
try {
Class.forName(sDBDriver);
sHint = "Initialization sucessfully";
return true;
} catch (ClassNotFoundException e) {
sHint = "Initialization Exception:" + e.getMessage();
return false;
}
}
/**
* 关闭数据库对象
* www.2cto.com
*
*/
public boolean close() {// 关闭数据库连接
try {
if (rs != null)
{ rs.close();}
if (stmt != null)
{stmt.close();}
if (conn != null)
{conn.close();}
return true;
} catch (SQLException ex) {
sHint = "Close Exception:" + ex.getMessage();
return false;
}
}
/**
* 插入大字段方法
*
*
*/
public String insertClob(int userid, int courseware_Id, int Progress,
String CourseClob) {// 插入数据库clob字段
try {
// int testid = 77;
// System.out.println("113用户ID" + userid + "课件ID" + courseware_Id+
// "进度" + Progress + "value=" + CourseClob);
Class.forName(this.sDBDriver);
Connection cOnn= DriverManager.getConnection(this.url, this.user,
this.pwd);
conn.setAutoCommit(false);
/* 以下表User_CourseWare中的Report字段时CLOB类型的 */
// 插入一条数据,注意CLOB字段,需要先插入一个空的clob类型 empty_clob(),然后再单独更新clob字段
// String sql = "insert into
// User_CourseWare(User_Id,Courseware_Id,Progress,Report,Id)values(
// ?,?,?,empty_clob(),?)";
String sql = "insert into User_CourseWare(User_Id,Courseware_Id,Progress,Report ,id)values( ?,?,?,empty_clob(), user_courseware_sq.nextval )";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, userid);
pstmt.setInt(2, courseware_Id);
pstmt.setInt(3, Progress);
// System.out.println("sql insert=" + sql);
// pstmt.setInt(4, testid);
int i1 = pstmt.executeUpdate();
conn.commit(); www.2cto.com
pstmt = null;
if (i1 > 0) {
// System.out.println("用户ID" + userid + "插入" + courseware_Id+
// "课件成功");
}
ResultSet rs = null;
CLOB clob = null;
String sql1 = "select Report from User_CourseWare where User_Id=? and Courseware_Id=? for update";
pstmt = conn.prepareStatement(sql1);
/*
* pstmt.setInt(1, testid); pstmt.setInt(2, userid); pstmt.setInt(3,
* courseware_Id);
*/
// System.out.println("sql1 select=" + sql1);
pstmt.setInt(1, userid);
pstmt.setInt(2, courseware_Id);
rs = pstmt.executeQuery();
if (rs.next()) {
clob = (CLOB) rs.getClob(1);
}
Writer writer = clob.getCharacterOutputStream();
writer.write(CourseClob);
writer.flush();
writer.close();
rs.close();
conn.commit();
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
return "error";
}
return "success";
}
/**
* 获得大字段XML
* 获得大字符串格式
*
* @param user_id
* 用户ID
* @param courseware_id
* 课件ID
* @return 大字符串
*
*/
public String getCourseClob(int user_id, int courseware_id) {// 根据课件ID和人ID查询课程ID www.2cto.com
String cOntent= "null";
try {
Class.forName(this.sDBDriver);
Connection cOnn= DriverManager.getConnection(this.url, this.user,
this.pwd);
conn.setAutoCommit(false);
ResultSet rs = null;
CLOB clob = null;
String sql = "";
sql = "select Report from User_CourseWare where user_id=? and courseware_id=? ";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, user_id);
pstmt.setInt(2, courseware_id);
rs = pstmt.executeQuery();
if (rs.next()) {
clob = (CLOB) rs.getClob(1);
if (clob != null && clob.length() != 0) {
cOntent= clob.getSubString((long) 1, (int) clob.length());
cOntent= this.Clob2String(clob);
}
}
rs.close();
conn.commit();
pstmt.close();
conn.close();
www.2cto.com
} catch (ClassNotFoundException e) {
e.printStackTrace();
// return "null";
cOntent= "error";
} catch (SQLException e) {
e.printStackTrace();
// return "null";
cOntent= "error";
}
return content;
}
/**
* clob to string
* 大字符串格式转换STRING
* @param clob
* @return 大字符串
*
*/
public String Clob2String(CLOB clob) {// Clob转换成String 的方法
String cOntent= null;
StringBuffer stringBuf = new StringBuffer();
try { www.2cto.com
int length = 0;
Reader inStream = clob.getCharacterStream(); // 取得大字侧段对象数据输出流
char[] buffer = new char[10];
while ((length = inStream.read(buffer)) != -1) // 读取数据库 //每10个10个读取
{
for (int i = 0; i
stringBuf.append(buffer[i]);
}
}
inStream.close();
cOntent= stringBuf.toString();
} catch (Exception ex) {
System.out.println("ClobUtil.Clob2String:" + ex.getMessage());
}
return content;
}
/**
*
* 更新Clob(大字符串格式)内容
* @param userid
* 用户ID
* @param courseware_Id
* 课件ID
* @param Progress
* 课件进度
* @param CourseClob
* XML 字符串
* @return boolean
* www.2cto.com
*/
public String updateClob(int userid, int courseware_Id, int Progress,
String CourseClob) {
this.updateUser_Course(userid, courseware_Id, Progress);// 调用更新进度
try {
Class.forName(this.sDBDriver);
Connection cOnn= DriverManager.getConnection(this.url, this.user,
this.pwd);
String sql = "update User_CourseWare set Report=empty_clob() , Progress=? where User_Id = ? and Courseware_Id =? ";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, Progress);
pstmt.setInt(2, userid);
pstmt.setInt(3, courseware_Id);
int i1 = pstmt.executeUpdate();
conn.commit();
// System.out.println("update sql="+sql);
pstmt = null; www.2cto.com
if (i1 > 0) {
}
ResultSet rs = null;
CLOB clob = null;
String sql1 = "select Report from User_CourseWare where User_id=? and Courseware_id=? for update";
pstmt = conn.prepareStatement(sql1);
// System.out.println("select sql="+sql1);
pstmt.setInt(1, userid);
pstmt.setInt(2, courseware_Id);
rs = pstmt.executeQuery();
if (rs.next()) {
clob = (CLOB) rs.getClob(1);
} www.2cto.com
Writer writer = clob.getCharacterOutputStream();
writer.write(CourseClob);
writer.flush();
writer.close();
rs.close();
conn.commit();
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
return "error";
}
return "success";
} www.2cto.com
/*
* 参数:userid 用户ID courseware_Id 课件ID Progress 课件进度 返回值 课件进度不到100时不更新 到100时
* 更新 状态为2(已学)
*/
public String updateUser_Course(int userid, int courseware_Id, int Progress) {
String caseTest = "default";
if (Progress == 100) {
String sql = "update User_Course set Status =2 where USER_ID =? and COURSE_ID =? ";
try {
Class.forName(this.sDBDriver);
Connection cOnn= DriverManager.getConnection(this.url,
this.user, this.pwd);
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, userid);
pstmt.setInt(2, courseware_Id);
www.2cto.com
int i1 = pstmt.executeUpdate();
conn.commit();
pstmt = null;
if (i1 > 0) {
// System.out.println("更新成功!");
}
caseTest = "success";
} catch (Exception e) {
caseTest = "error";
e.printStackTrace();
}
}
return caseTest;
}
www.2cto.com
/**
*
* @param sql
* 要执行的查询语句
* @return 结果集
*/
public ResultSet executeQuery(String sql) {
rs = null;
try {
Class.forName(this.sDBDriver);
cOnn= DriverManager.getConnection(this.url, this.user, this.pwd);
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
} catch (Exception ex) {
sHint = "Query Exception:" + ex.getMessage();
} www.2cto.com
return rs;
}
/**
* 执行 更新删除等语句
*
* @param sql
* @return 返回执行结果的boolean值
*/
public boolean executeUpdate(String sql) {
try {
Class.forName(this.sDBDriver);
cOnn= DriverManager.getConnection(this.url, this.user, this.pwd);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
conn.commit();
return true; www.2cto.com
} catch (Exception ex) {
sHint = "Update Exception :" + ex.getMessage();
return false;
}
}
}
推荐阅读
-
在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ...
[详细]
蜡笔小新 2024-12-27 12:17:16
-
本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ...
[详细]
蜡笔小新 2024-12-28 12:22:34
-
-
本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ...
[详细]
蜡笔小新 2024-12-27 19:31:05
-
本文详细介绍了如何使用Spring Boot进行高效开发,涵盖了配置、实例化容器以及核心注解的使用方法。 ...
[详细]
蜡笔小新 2024-12-27 15:28:29
-
本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ...
[详细]
蜡笔小新 2024-12-27 13:55:14
-
本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ...
[详细]
蜡笔小新 2024-12-27 13:10:20
-
本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ...
[详细]
蜡笔小新 2024-12-27 11:48:15
-
本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ...
[详细]
蜡笔小新 2024-12-27 11:39:44
-
本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ...
[详细]
蜡笔小新 2024-12-27 10:34:22
-
RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ...
[详细]
蜡笔小新 2024-12-26 20:24:01
-
本文介绍如何在 Unity 的 XML 配置文件中,将参数传递给自定义生命周期管理器的构造函数。我们将详细探讨 CustomLifetimeManager 类的实现及其配置方法。 ...
[详细]
蜡笔小新 2024-12-26 17:21:54
-
本文详细介绍了 Java 中 org.apache.xmlbeans.SchemaType 类的 getBaseEnumType() 方法,提供了多个代码示例,并解释了其在不同场景下的使用方法。 ...
[详细]
蜡笔小新 2024-12-26 11:46:55
-
本文详细介绍了如何解决MyBatis中常见的BindingException错误,提供了多种排查和修复方法,确保Mapper接口与XML文件的正确配置。 ...
[详细]
蜡笔小新 2024-12-25 19:42:47
-
SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ...
[详细]
蜡笔小新 2024-12-25 19:26:39
-
在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ...
[详细]
蜡笔小新 2024-12-25 18:48:34
-
手机用户2502925763
这个家伙很懒,什么也没留下!