首页 > 解决方案 > 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
  }));

});

标签: mysqlnode.jselectrondesktop

解决方案


您可以使用 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 层取决于您的要求。


推荐阅读