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去實現。
需要的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解析。