mysql - Node.js - 可用于桌面应用程序开发 - MySQL、DataTable 和文件打开
问题描述
自过去 3 天以来,我一直在关注它,不确定我是否正确理解了它的目的 - Node.js/Electron。
几年前,我构建了一个简单的 VB.net 应用程序 - 它连接到 Mysql(包含带有路径的文件名表),将文件名路径显示为网格中的行,双击后,它会打开文件。
我可以在 Node.js 或 Electron 中做这样的事情吗?
1)我可以在Node.js桌面应用程序窗口(不是浏览器)中使用可以打开本地文件的按钮制作一个js文件。[ https://www.codediesel.com/nodejs/how-to-open-various-desktop-applications-from-nodejs/ ]。
2)我还可以在浏览器中使用 localhost:port 将 mySql 表视为 html 表以及控制台日志窗口中的行 [ https://www.sitepoint.com/using-node-mysql-javascript-client/ ]
是否有可能同时使用这两个俱乐部,或者我应该尝试其他的东西。[由于行数超过 100K,还需要 Ajax]
编辑:test.html
<html>
<head>
<script>window.$ = window.jQuery = require('./js/jquery.js');</script>
<meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-inline';">
</head>
<body>
<h1>Electron MySQL Example</h1>
<div id="resultDiv"></div>
<div>
<input type="button" id="action-btn" value="Retrieve 10 first rows in the database" />
<table id="table" border="1">
<tbody>
</tbody>
</table>
</div>
<script>
var mysql = require('mysql');
var connection = mysql.createConnection({
host : '10.251.198.2',
user : 'root',
password : '',
database : 'test'
});
connection.connect();
var sql = 'SELECT `id`,`name` FROM `employees`';
connection.query(sql, function (error, results, fields) {
if (error) console.log(error.code);
else {
console.log(results);
$('#resultDiv').text(results[0].name); //emp_name is column name in your database
}
});
connection.end();
</script>
<!---New --->
<script>
var mysql = require('mysql');
function el(selector) {
return document.getElementById(selector);
}
el('action-btn').addEventListener('click', function(){
// Get the mysql service
getFirstTenRows(function(rows){
var html = '';
rows.forEach(function(row){
html += '<tr>';
html += '<td>';
html += row.id;
html += '</td>';
html += '<td>';
html += row.name;
html += '</td>';
html += '</tr>';
console.log(row);
});
document.querySelector('#table > tbody').innerHTML = html;
});
},false);
function getFirstTenRows(callback){
var mysql = require('mysql');
// Add the credentials to access your database
var connection = mysql.createConnection({
host : '10.251.198.2',
user : 'root',
password : '',
database : 'test'
});
// connect to mysql
connection.connect(function(err) {
// in case of error
if(err){
console.log(err.code);
console.log(err.fatal);
}
});
// Perform a query
$query = 'SELECT `id`,`name` FROM `employees` LIMIT 10';
connection.query($query, function(err, rows, fields) {
if(err){
console.log("An error ocurred performing the query.");
console.log(err);
return;
}
callback(rows);
console.log("Query succesfully executed");
});
// Close the connection
connection.end(function(){
// The connection has been closed
});
}
</script>
</body>
</html>
索引.js
const electron = require('electron');
const app = electron.app;
const path = require('path');
const url = require('url');
const BrowserWindow = electron.BrowserWindow;
var mainWindow;
app.on('ready',function(){
mainWindow = new BrowserWindow({
width: 1024,
height: 768,
webPreferences: {
nodeIntegration: true
},
//backgroundColor: '#2e2c29'
});
//mainWindow.loadURL('https://github.com');
mainWindow.loadURL(url.format({
pathname: path.join(__dirname, 'test.html'),
protocol: 'file:',
slashes: true
}));
});
解决方案
您可以使用 Electron 创建桌面应用程序并连接到 Mysql 数据库。这里有几个有用的链接。
https://ourcodeworld.com/articles/read/259/how-to-connect-to-a-mysql-database-in-electron-framework
https://github.com/techiediaries/electron-mysql-demo
Node JS 主要用于创建 REST API,从服务器提供网页。您可以使用 Express/Restify 在 Node JS 中创建与 DB 交互的 API,并且 Electron 应用程序可以使用此服务。是否需要 API 层取决于您的要求。
推荐阅读
- node.js - 将对象插入到 mongoDB 集合的列表中
- python-3.x - 'google.colab.files.download' 到 PC 中的特定位置/目录
- react-native - 换一个点'.' 到逗号','并在反应原生价格中添加零'0'
- android - Android layout-normal 文件夹不工作
- javascript - 在 mouseClicked 函数内增加一个数字
- perl - 未知字符集重音字符转换为 utf8
- git - Git n commit 后面 | n 前面
- python - 如何让 pyautogui 从字符串中打印单词?
- python - 重新定向 Matplotlib 极坐标图
- aws-lambda - 响应卡未显示 -Amazon lex