亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Java中如何使用嵌入MySQL

asal 2016-11-10 15:25:13 419
abstrak:這篇手記主要介紹在Java中嵌入式MySQL的使用,對于一些的應(yīng)用項(xiàng)目,提供安裝版的Mysql,Oracle是必須的工作。但是有時(shí)候如果是一個(gè)小的工具,可安裝或者移植性比較強(qiáng)的小軟件。再去安裝數(shù)據(jù)庫可能就比較麻煩了。其實(shí)MySQL也有嵌入式的,不需要安裝,在使用的過程中,會自動創(chuàng)建數(shù)據(jù)庫以及通過代碼的方式啟動或者關(guān)閉。下面提供一些代碼片段,具體的會提供下載地址。這個(gè)是核心代碼類,這個(gè)類實(shí)現(xiàn)了Mys

這篇手記主要介紹在Java中嵌入式MySQL的使用,對于一些的應(yīng)用項(xiàng)目,提供安裝版的Mysql,Oracle是必須的工作。但是有時(shí)候如果是一個(gè)小的工具,可安裝或者移植性比較強(qiáng)的小軟件。再去安裝數(shù)據(jù)庫可能就比較麻煩了。

其實(shí)MySQL也有嵌入式的,不需要安裝,在使用的過程中,會自動創(chuàng)建數(shù)據(jù)庫以及通過代碼的方式啟動或者關(guān)閉。下面提供一些代碼片段,具體的會提供下載地址。

這個(gè)是核心代碼類,這個(gè)類實(shí)現(xiàn)了Mysql 的啟動和停止以及數(shù)據(jù)庫的啟動狀態(tài)。

package net.simple.mysql;  
import java.io.File; 
import java.util.HashMap; 
import java.util.Map; 
import java.util.Properties; 
import java.util.Set;  
import com.mysql.management.MysqldResource;  
public final class EmbedMySqlServer { 
    private MysqldResource mysqlInstance; 
    //配置信息 
    public final Properties props; 
    //端口信息 
    private String port; 
    /** 
     * 考慮到數(shù)據(jù)庫的性能問題,允許將數(shù)據(jù)庫放在其它磁盤 
     */ 
    private String embedMySqlHome;  
    public EmbedMySqlServer(final Properties props) { 
        this.props = props; 
    }  
    public EmbedMySqlServer(final Properties props, String embedMySqlHome) { 
        this.embedMySqlHome = embedMySqlHome; 
        this.props = props; 
    }  
    public final String getEmbedMySqlHome() { 
        return null == embedMySqlHome ? getPlatformBaseDir() : embedMySqlHome; 
    }  
    /** 
    * 獲得當(dāng)前應(yīng)用主目錄 
    * @return 當(dāng)前應(yīng)用啟動程序所在目錄. 
    */ 
    public static String getPlatformBaseDir() { 
        return System.getProperty("user.dir"); 
    } 
 
    public static boolean isBlank(final String str) { 
        int strLen; 
        if (str == null || (strLen = str.length()) == 0) { 
            return true; 
        } 
        for (int i = 0; i < strLen; i++) { 
            if (Character.isWhitespace(str.charAt(i)) == false) { 
                return false; 
            } 
        } 
        return true; 
    }  
    public void startup() { 
        final File baseDir = new File(getEmbedMySqlHome(), "mysql-em"); 
        mysqlInstance = new MysqldResource(baseDir); 
        port = props.getProperty("port"); 
        if (isBlank(port)) 
            props.put("port", port = String.valueOf((int) (Math.random() * 40000))); 
        final Set<Object> keys = props.keySet(); 
        final Map<String, String> options = new HashMap<String, String>(keys.size()); 
        for (final Object key : keys) { 
            final String val = props.getProperty(key.toString()); 
            if ("".equals(val)) 
                options.put(key.toString(), null); 
            else 
                options.put(key.toString(), val.replace("{$contextPath}", getPlatformBaseDir())); 
        } 
        if (!mysqlInstance.isRunning()) 
            mysqlInstance.start("Em_MySQL", options, false, keys.contains("defaults-file")); 
    }  
    public String getPort() { 
        return port; 
    }  
    /** 
     * 判斷mysql是否正在運(yùn)行 
     */ 
    public boolean isRunning() { 
        return null == mysqlInstance ? false : mysqlInstance.isRunning(); 
    }  
    public void shutdown() { 
        if (mysqlInstance != null) 
            mysqlInstance.shutdown(); 
    } 
 
    public void cleanup() { 
        if (mysqlInstance != null) 
            mysqlInstance.cleanup(); 
    } 
}

下面這個(gè)是啟動Demo

public static void main(String[] args) {  
try {  
Properties pro = new Properties();  
//根據(jù)機(jī)器配置,設(shè)置不同的參數(shù)  
pro.load(MysqlTest.class.getResourceAsStream("MySql_medium.properties")); 
 new EmbedMySqlServer(pro).startup();  
//可以把數(shù)據(jù)庫放到其他磁盤  
//new EmbedMySqlServer(pro,"f:\\").startup();  
Connection conn = getTestConnection();  
System.out.println(conn.isClosed());  
conn.close();  
} catch (Exception e) {  
e.printStackTrace();  
}  
}

MySql_general.properties一般機(jī)器的配置樣例

MySql_medium.properties中等機(jī)器的配置樣例

MySql_large.properties高配機(jī)的配置樣例

具體的參數(shù)可以根據(jù)不同需求進(jìn)行定義,比如端口可以自由定義。

需要引用的mysql兩個(gè)jar,mysql-connector-mxj-gpl-6-0-11-db-files.jar,mysql-connector-mxj-gpl-6-0-11.jar


Nota Keluaran

Penyertaan Popular