標籤:
要在java對資料庫做任何操作,第一件事當然是擷取資料庫連接,筆者是通過設定檔的形式載入資料庫資訊的,設定檔名為db.properties,內容如下
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/customermanage
username=root
password=root
ps:properties中的內容均為索引值對形式,不需要用到引號
接下來是DBUtil類,擷取配置,得到串連
package com.cherry.utils;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Properties;import java.util.ResourceBundle;public class DBUtils { static String driver; static String url; static String username; static String password; static { try { // Class.forName("com.mysql.jdbc.Driverr"); // DriverManager.getConnection("jdbc:mysql://localhost:3306/customermanage", // "root", "root"); ResourceBundle rb = ResourceBundle.getBundle("db"); driver = rb.getString("driver"); Class.forName(driver); url = rb.getString("url"); username = rb.getString("username"); password = rb.getString("password"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConn() throws SQLException { return DriverManager.getConnection(url, username, password); } public static void releaseRes(ResultSet rs, PreparedStatement ps, Connection conn) throws SQLException { if (rs != null) { rs.close(); } if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } }}
先說說批處理操作類
package com.cherry.batch;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import com.cherry.utils.DBUtils;public class BatchSQL {public static void main(String[] args) throws SQLException { Connection conn= DBUtils.getConn(); String sql="insert into des value(?,?)"; PreparedStatement ps=conn.prepareStatement(sql); for ( int i=0;i<10000 ;i++) { ps.setString(1, "name"+i); ps.setString(2, "des"+i); ps.addBatch(); if(i%100==0){ ps.executeBatch(); ps.clearBatch(); } }}}
再看大文本或圖片類型的儲存
package com.cherry.batch;import java.io.File;import java.io.FileInputStream;import java.io.FileReader;import java.io.Reader;import java.sql.Connection;import java.sql.PreparedStatement;import java.util.UUID;import com.cherry.utils.DBUtils;public class TextSQL { public static void main(String[] args) { try { Connection connection = DBUtils.getConn(); String sql = "insert into des values(?,?)"; PreparedStatement ps = connection.prepareStatement(sql); ps.setString(1, UUID.randomUUID().toString()); File file = new File("f://test.txt"); Reader reader = new FileReader(file); //這裡不一定要強轉,看你的mysql驅動版本,總之不轉不行就轉個試試 ps.setCharacterStream(2, reader, (int)file.length()); ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } }}
另外,注意導包,這裡所有的資料庫操作類所導的都是java.sql下的,想想也知道,面向介面編程的Java君,肯定是使用sql包的(普適性),因為mysql/sqlserver/orcale這些都是實作類別,用他們肯定不合適。
mysql資料庫---批處理與大文本/圖片類型