12.JDBC
/*使用JDBC處理大數據*/
在實際開發中,程序需要把大文本或二進制數據保存到數據庫中
大數據LOB(Large Objects),LOB又分為clob和blob
clob用來存儲大文本 blob用于存儲二進制數據,例如圖像、聲音、二進制等。
對于MySQL而言只有blob,而沒有clob,mysql存儲大文本采用的是Text,Text和blob分別又分為:
TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT
TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB
?
/*對于MySQL中的Text類型,可調用如下方法設置(過程:1.拿到st 2.拿到文件的路徑 3.通過路徑創建file對象 4.設置Text屬性)*/
PreparedStatment.setCharacterStream(index,reader,length);
?
/*對于MySQL中Text類型,可調用如下方法獲取 (過程:1.拿到rs 2.拿到reader 3.將reader中的數據讀取到FileWriter)*/
reader=resultSet.getCharacterStream(i);
reader=resultSet.getClob(i).getCharacterStream();
reader=resultSet.getString(i);
?
/*對于MySQL中的BLOB類型,可調用如下方法設置: (過程:1.拿到st 2.拿到文件的路徑 3.設置Blog屬性) (和Text的設置大同小異)*/
PreparedStatment.setBinaryStream(i,inputStream,length);
/*對于MySQL中的BLOB類型,可調用如下方法獲取: (過程:1.拿到rs 2.拿到InputStream(因為讀取的是二進制,所以和Text有些區別) 3.將InputStream中的數據讀取到FileWriter)*/
InputStream in = resultSet.getBinaryStream(i);
InputStream in = resultSet.getBlob(i).getBinaryStream();
?
/*JDBC批處理*/ (批處理執行后,要清空下批處理 st.clearBatch())
1.采用Statment.addBatch(sql)方式實現批處理
優點:可以向數據庫發送多條不同的SQL語句。
缺點:1.SQL語句沒有編譯 2.當向數據庫發送多條語句相同,但僅參數不同的SQL語句時(pst可以用?設定),需要重復寫上很多條SQL語句
2.實現批處理的第二種方式:
PreparedStatement.addBatch();
?
/*獲取數據庫自動生成的主鍵*/ (只對insert操作有效)
PreparedStatment st = conn.prepareStatement(sql,Statement.RETURN_GENTURN_GENERATED_KEYS) (Statement.RETURN_GENTURN_GENERATED_KEYS 默認會加上)
st.executeUpdate();
ResultSet rs = st.getGeneratdKeys(); //得到 /*插入行*/ 的主鍵?
?
/*JDBC調用存儲過程*/
1.編寫存儲過程
2.在程序中調用
得到CallableStatment,并調用存儲過程(CallableStatement cStmt = connprepareCall("{call demoSp(?,?)}");
設置參數,注冊返回值,得到輸出( cStmt.getString(1))
cStmt.setString(1,"xxx"); 設置參數
cStmt.registerOutParameter(2,Types.VARCHAR); 注冊返回值
cStmt.execute();
轉載于:https://www.cnblogs.com/xuzekun/p/7359196.html
總結
- 上一篇: 提供openssl -aes-256-c
- 下一篇: sparkStreaming 练习