معلومات المنتج:
الحزمة com.wanmei.meishu؛
استيراد java.io.FileInputStream؛
import java.io.FileOutputStream;
استيراد java.io.FileReader؛
استيراد java.io.InputStream؛
استيراد java.io.OutputStream؛
استيراد java.sql.Connection؛
استيراد java.sql.DriverManager؛
import java.sql.PreparedStatement;
import java.sql.ResultSet;
استيراد java.sql.SQLException؛
import java.util.Properties;
import oracle.sql.BLOB;
الطبقة العامة BlobUtil {
BlobUtil bu خاص ثابت؛
بيئة سلسلة خاصة؛
عامة ثابتة BlobUtil getInstance(String env) {
bu = new BlobUtil();
bu.env = env;
العودة بو؛
}
/**
* <p>البحث عن منتجات جديدة</p>
* @يعود
* @throws استثناء
*/
اتصال خاص getConnection() يلقي استثناء {
سلسلة السائق = "Oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
String env = this.env;
Properties pro = new Properties();
// تصنيف الفصول الدراسية
pro.load(new FileReader(Class.class.getResource("/config.properties").getFile()));
String host = pro.getProperty(env + ".host");
قاعدة بيانات السلسلة = pro.getProperty(env + ".database");
String username = pro.getProperty(env + ".username");
كلمة مرور السلسلة = pro.getProperty(env + ".password");
String port = pro.getProperty(env + ".port");
String url = "jdbc:Oracle:thin:@" + host + ": " + port + ": " + قاعدة البيانات؛
إرجاع DriverManager.getConnection(url, اسم المستخدم, كلمة المرور);
}
/**
* <p>الأمر الذي يتطلبه الأمر هو أن تكون قادرًا على تحقيق النجاح</p>
* @param معرف المشروع
* @param معرف المهمة
* @param اسم الملف
* ملفparam
* @return 返回是否成功
*/
كتابة منطقية عامة (String projectId، String TaskId، String fileName، String file) {
اتصال كون = فارغ؛
ResultSet rs = null;
PreparedStatement ps = null;
BLOB blob = null;
علامة منطقية = خطأ؛
يحاول {
كون = getConnection();
conn.setAutoCommit(false);
String sql = "INSERT INTO PS_ZP_PRJ_WBS_BLOB BLB(ZP_PRJ_ID, ZZ_SEQ_NUM, ZZ_FILE_NAME, ZZ_IMAGE_BLOB) VALUES(?, ? ,? ,empty_blob())";
ps = conn.prepareStatement(sql);
ps.setString(1, projectId);
ps.setString(2, TaskId);
ps.setString(3, fileName);
ps.executeUpdate();
sql = "SELECT ZZ_IMAGE_BLOB FROM PS_ZP_PRJ_WBS_BLOB WHERE ZP_PRJ_ID = ? AND ZZ_SEQ_NUM = ? AND ZZ_FILE_NAME = ? للتحديث";
ps = conn.prepareStatement(sql);
ps.setString(1, projectId);
ps.setString(2, TaskId);
ps.setString(3, fileName);
rs = ps.executeQuery();
إذا (rs.next()) {
blob = (BLOB) rs.getBlob(1);
}
InputStream in = new FileInputStream(file);
OutputStream out = blob.setBinaryStream(1L);
بايت[] المخزن المؤقت = بايت جديد[1024];
طول كثافة العمليات = -1؛
بينما ((الطول = in.read(المخزن المؤقت)) != -1){
out.write(buffer, 0, length);
}
in. Close();
out.Close();
conn.commit();
conn.setAutoCommit(true);
العلم = صحيح؛
}
قبض (استثناء ه) {
إذا (كون != فارغة) {
يحاول {
conn.rollback();
} قبض على (SQLException e1) {
e1.printStackTrace();
}
}
}
أخيراً {
يحاول {
rs. Close();
ملاحظة: إغلاق ()؛
conn.Close();
}
قبض (استثناء ه) {
printStackTrace();
}
}
علم العودة؛
}
/**
* <p>معرف هوية المستخدم،معرف المنتج،معرف البيانات الشخصية،حجم البيانات</p>
* @param معرف المشروع
* @param معرف المهمة
* @param اسم الملف
* ملفparam
* @return 返回是否成功
*/
قراءة منطقية عامة (String projectId، String TaskId، String fileName، String file) {
اتصال كون = فارغ؛
ResultSet rs = null;
PreparedStatement ps = null;
BLOB blob = null;
علامة منطقية = خطأ؛
يحاول {
كون = getConnection();
String sql = "SELECT ZZ_IMAGE_BLOB FROM PS_ZP_PRJ_WBS_BLOB WHERE ZP_PRJ_ID = ? AND ZZ_SEQ_NUM = ? AND ZZ_FILE_NAME = ؟";
ps = conn.prepareStatement(sql);
ps.setString(1, projectId);
ps.setString(2, TaskId);
ps.setString(3, fileName);
rs = ps.executeQuery();
إذا (rs.next()) {
blob = (BLOB) rs.getBlob(1);
}
InputStream in = blob.getBinaryStream();
بايت[] buf = بايت جديد[1024];
int bytesIn = 0;
FileOutputStream out = new FileOutputStream(file);
بينما ((bytesIn = in.read(buf, 0, 1024)) != -1) {
out.write(buf, 0, bytesIn);
}
in. Close();
out.Close();
العلم = صحيح؛
}
قبض (استثناء ه) {
printStackTrace();
}
أخيراً {
يحاول {
rs. Close();
ملاحظة: إغلاق ()؛
conn.Close();
}
قبض (استثناء ه) {
printStackTrace();
}
}
علم العودة؛
}
public static void main(String[] args) {
BlobUtil bu = BlobUtil.getInstance("MSDEV");
System.out.println(bu.write("CB"، "001"، "image1"، "D://61e44b02jw1dw4xbp2zo6j.jpg"));
System.out.println(bu.read("CB"، "001"، "image1"، "D://2.jpg"));
}
}