1. 程式人生 > >nodejs連線Access資料庫,出現Error: Spawn C:\WINDOWS\SysWOW64\cscript.exe error Java專案生成可執行jar包、exe檔案以及在Windows下的安裝檔案

nodejs連線Access資料庫,出現Error: Spawn C:\WINDOWS\SysWOW64\cscript.exe error Java專案生成可執行jar包、exe檔案以及在Windows下的安裝檔案

因為集成了第三方的資料庫,所以需要獲取資料庫的資料

使用

var connection = ADODB.open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+config.id_path+';');   const users = await connection.query('SELECT * FROM [Citizen] )'); 出現上述問題,解決無果,後面就打算用java去實現。  
1、java使用ucanaccess連線Access資料庫,進行增刪改查


需要的Jar包如下:

 



程式碼如下:

    package test;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
 
public class main {
    public static void main(String[] args) throws Exception {
        
        Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");// 這個驅動的地址不要改
        // con=DriverManager.getConnection("jdbc:ucanaccess://D:\\Database3.mdb","123456","123456");
        Connection con = DriverManager
                .getConnection("jdbc:ucanaccess://E:\\workspace\\java\\test\\data\\idcardinfocard.mdb","111111","111111");
        Statement stmt = con.createStatement();
 
        // 查詢資料
        ResultSet rs = stmt.executeQuery("SELECT *  FROM ReadHistory");
        ResultSetMetaData data = rs.getMetaData();
        for (int i = 1; i <= data.getColumnCount(); i++) {
            String columnName = data.getColumnName(i);
            System.out.println("獲得列" + i + "的欄位名稱:" + columnName);
        }
        while (rs.next()) {
            System.out.println(rs.getString("ID"));
            System.out.println(rs.getString("讀卡時間"));
            System.out.println(rs.getString("讀卡時間"));
            
            
        }
 

    }
}
2、然後將java檔案生成exe

 

Java專案生成可執行jar包、exe檔案以及在Windows下的安裝檔案

1、如何通過eclipse將Java專案生成可執行jar包

首先把在eclipse下的java專案匯出jar file

下一步

下一步

下一步

最後點選完成,便生成了可執行的jar檔案。可以在剛剛選擇匯出目錄的資料夾中找到。

2、將剛剛生成的jar檔案匯出可執行的.exe檔案,首先安裝exe4j軟體,下載地址如下:http://www.jb51.net/softs/541579.html,下載後安裝破解。開啟介面如下

直接下一步,選擇第二個

下一步

下一步

如果要在64位下執行,則要點選下面那個按鈕,然後選擇32bit or 64 bit。如果是32位的直接下一步

進入下一個介面,勾選那個

下一步,下一步,進入這個介面,點選“+”然後選擇你剛剛生成的jar檔案,如有第三方jar包,也要一一加入進去。

點選ok回到剛剛的介面,選擇程式的入口類檔案

下一步,選擇最小可執行的jre版本

如果只是在本機有jdk環境下執行直接下一步,如果要在沒有jre環境下執行則要把自己安裝jdk資料夾下的jre檔案加入進去。

點選advanced options選擇search sequence,進入下一個介面,刪除這兩個檔案

然後加入自己的jre檔案,注意:jre檔案的路徑裡要包一層jre目錄,即jre\jre,否則生成的exew檔案在其沒有jre環境的電腦裡無法執行。

回到剛剛的介面

一直下一步,選擇預設的就可以了,最後完成

去你剛剛選擇輸出exe檔案下找到剛剛生成的exe檔案。點選是可以執行的,但如果要在其他電腦執行,則每次都要把jre檔案和exe一起復制到其他電腦上。所以下一步就是把exe檔案和jre編譯成在windows下的可按照檔案。

3、把exe檔案和jre編譯成在windows下的可按照檔案。首先到網上下載Inno setup軟體,下載地址:https://www.xp510.com/xiazai/Application/program/17984.html,下載安裝後開啟的介面如下;

選擇這個,點選OK

下一步,預設按照檔案的目錄,其他預設。

下一步,選擇剛剛生成的exe檔案和jre資料夾

下一步預設

下一步,這些都是許可檔案和安裝宣告等,可以不選

 

下一步,下一步進入這個介面

下一步,勾選yes

下一步,完成。選擇是

下一步,可以保持也可以不儲存

最後編譯介面,等編譯完成就生成了可以安裝的檔案

找到剛剛輸出檔案的目錄和生成的檔案,雙擊安裝。安裝完成後的目錄如果是這樣,則說明一切成功。如果jre裡面的檔案和這些檔案在同一個目錄下,則在其他沒有jre環境的電腦不能執行。導致這樣的原因是jre的目錄不是少一層,應該是這樣的..\jre\jre

 

3、使用node獲取exe檔案的輸出值,中文會出現亂碼

簡體中文windows命令列,都使用的是CP936(近似於gb2312)編碼,nodejs以utf8識別是會出問題。
可以這樣處理:

var child_process = require('child_process');
var iconv = require('iconv-lite');
var encoding = 'cp936';
var binaryEncoding = 'binary';

child_process.exec('test.exe', { encoding: binaryEncoding }, function(err, stdout, stderr){
    console.log(iconv.decode(new Buffer(stdout, binaryEncoding), encoding), iconv.decode(new Buffer(stderr, binaryEncoding), encoding));
});

先用binary來儲存輸出的文字,再用iconv來以cp936解析。