2016-07-13 18 views
0
 String sql ="insert into c_db (f_name,access_time,photo) values (?,?,?)"; 
     PreparedStatement statement = conn.prepareStatement(sql); 

     InputStream inputStream = new FileInputStream(fblob); 

     Path path = Paths.get("C:/Users/Administrator/Desktop/photo/K-001.png"); 
     BasicFileAttributes attr = Files.readAttributes(path,BasicFileAttributes.class,NOFOLLOW_LINKS); 

     statement.setString(1,fblob.getName());  
     statement.setFileTime(2,attr.lastAccessTime());   
     statement.setBlob(3,inputStream); 

我想使用MySQL數據庫在插入鏡像文件數據(文件名,accesstime)。Java的MySQL的使用BasicFileAttributes插入鏡像文件最後訪問時間

,這是CREATETABLE

create table C_db(
image_id int(11) auto_increment, 
f_name varchar(45) default null, 
access_time datetime default null, 
photo mediumblob, 
primary key (image_id) 
); 

但錯誤是

"Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method setFileTime(int, FileTime) is undefined for the type PreparedStatement at jdbcExample.main(jdbcExample.java:55)"

如何解決這個問題呢? 請幫我

+1

PreparedStatement接口沒有任何方法名爲'setFileTime();' – zombie

回答

0

PreparedStatement上的set*方法與您的字段名稱無關,而與這些字段的類型無關。 (如果你仔細想想,這應該是有道理的,因爲Java不能爲每一個領域的應用創建一個新的方法)。

所以,錯誤信息清楚地表明statement(或者更確切地說那裏的PreparedStatement對象)不知道方法setFileTime()。您想要作爲第二個參數發送的是最後一次訪問文件的時間。看看attr.lastAccessTime()的結果。這將是FileTime類型。數據庫不知道這是什麼類型。您必須將其轉換爲數據庫將理解的內容。日期通常被作爲字符串處理,所以你可以用這個來代替:

statement.setString(2, attr.lastAccessTime().toString()); 

然而,這要麼不工作,或者至少不會好作風。 SQL實現知道如何處理日期值,因此您可以改爲使用statement.setTimestamp(),但爲此,您必須將FileTime對象轉換爲Timestamp對象。這可能看起來像這樣:

FileTime lastAccess = attr.lastAccessTime(); 
java.sql.Timestamp timestamp = new java.sql.Timestamp(lastAccess.toMillis()); 
statement.setTimestamp(2, timestamp); 
+0

謝謝!!但我有另一個錯誤,這個「BasicFileAttributes attr = Files.readAttributes(路徑,BasicFileAttributes.class,NOFOLLOW_LINKS);」此位置錯誤是在sun.nio.fs.Util.followLinks(未知來源) \t at sun.nio.fs.WindowsFileSystemProvider.getFileAttributeView(Unknown Source) \t at sun.nio.fs.WindowsFileSystemProvider.readAttributes(Unknown Source) \t at java.nio.file.Files.readAttributes(Unknown Source)什麼是該錯誤? canㅠㅠㅠ –

+0

我無法真正幫助您逐步調試您的應用程序。您必須在某個時候正確學習Java。現在就開始吧。 ;) –