Mysql資料庫:java物件的存入和查詢
阿新 • • 發佈:2018-12-31
首先說明下我們實驗的條件:
資料庫中的表:books ,欄位id(int) book(Blob二進位制流)
連線方式:JDBC
定義一個簡單的連線資料庫的類:
public class DataBase{ public static final String Driver = "com.mysql.jdbc.Driver"; public static final String url = "jdbc:mysql://localhost:3306/books"; public static final String user = "root"; public static final String password = "root"; static { try { Class.forName(Driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException{ Connection conn = null; conn = DriverManager.getConnection(url,user,password); return conn; } }
其次,定義測試類,我們使用ArrayList物件來實驗,為了方便我們將異常進行丟擲
class Test{ public static void main(String[] args) throw Exception{ ArrayList<String> al = new ArrayLIst<String>(); al.add("1"); al.add("2"); al.add("3"); //先進行資料的儲存 Connection conn = DataBase.getConnection(); PreparedStatement pstmt = con.prepareStatement("insert into books values(1,?)");//想資料庫中插入第一組資料 pstmt.setObject(1,al); int time = pstmt.executeUpdate();//執行操作 System.out.println(time+"插入完成");//提示插入完成 pstmt.close(); //再進行資料的提出 Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("select book from books where id=1"); if(rs.next()){ ObjectInputStream oips = new ObjectInputStream(rs.getBinaryStream(1)); //從rs中得到物件的流,如果直接從rs.getObject(1)得到的物件是無法直接轉化為下面的物件的。 ArrayList<String> obb = (ArrayList<String>)oips.readObject();//從流中讀取物件 System.out.println(obb.get(2));//輸出物件中指定的資料 oips.close(); } rs.close(); stmt.close(); con.close(); } }