簡體   English   中英

如何將圖像設置到第七列?

[英]how can I set an image in to seventh column?

我有一個SQL表,該表具有7列和前六列,存儲字符串類型,但最后一個存儲BLOB類型。我使用addBirth方法獲得了這6種String類型,並且為了存儲最后一列的圖像,我使用insertImageToBirthTable方法。 我不想將Strings和BLOB一起存儲,因為用戶可能沒有選擇要添加人的照片。(我已經編輯了帖子,現在我使用此方法存儲圖像,但是在SQL表中它仍然為空值,為什么???)我還打印了路徑文件,它不是空的。

我的insertImageToBirthTable方法:

public static void insertImageToBirthTable(字符串名稱,字符串族,字符串父親名稱,字符串母親名稱,字符串dateOfBirth,字符串placeOfBirth,字符串pathFile){

try {
    System.out.println(pathFile);
    File file = new File(pathFile);
    FileInputStream input = new FileInputStream(file);
    PreparedStatement stmt = (PreparedStatement) conn.prepareStatement("UPDATE birthtable SET image =? WHERE name = '" + name + "'AND family ='" + family + "'AND fatherName = '" + fatherName + "'AND motherName ='" + motherName + "' AND dateOfBirth = '" + dateOfBirth + "' AND placeOfBirth = '" + placeOfBirth + "'");
    stmt.setBinaryStream(1, input);
    stmt.executeUpdate();


} catch (Exception e) {
    e.printStackTrace();
}

}

讀取異常消息將顯示:

沒有為參數1指定值

所以...我需要為你拼出來嗎? (提示:您需要為PreparedStatement 所有參數指定值。單個值將無效。)

如果要稍后添加圖像,則在表中需要一個“主鍵”。 主鍵為您提供了一種識別特定列的簡單方法。 將這樣的列添加到表中:

ID serial,

在插入過程中忽略此列,並在插入之后運行此查詢以了解新列的主鍵:

SELECT @@IDENTITY

稍后,當您最終獲得圖像時,運行此更新:

update set imageBlob = ? where ID = ?

InputStream用於第一個參數,將主鍵用作第二個參數。

[編輯]有關如何將圖像插入表格的完整示例,請參見此頁面

之所以會出現異常,是因為您需要提供sql中所有的參數(所有問號)。

如果您只需要提供imageBlob(我猜是您在調用它)列,同時將所有其他列默認為默認值,則可以命名要在sql中為其指定值的列,請嘗試這樣做,

query = ("insert into birthtable (imageBlob) VALUES (?)");

盡管在這里聽起來更新比插入更為合適,但另一個選擇是將其包括在您的插入或主插入中,並且在沒有圖像時為此列提供null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM