最近需求写桌面应用,没有后台直接操控数据库,可想了很多,起初走了弯路,想着放express里面,写接口请求,然后问题来了,node有个打包貌似可以解决环境问题,但不能叫用户打开程序还要启后台吧。。。 刚接触确实不知道很多方法,最后放弃,直接在vue项目中使用mysql模块,运行报错
查了查,发现安全性问题前台不能直接连接数据库,需要加express,这就又回到了最初的问题,但是我写的ele直接启index.html就可以连接成功
function getFirstTenRows(callback) {
var mysql = require("mysql");
// Add the credentials to access your database
var connection = mysql.createConnection({
host: "localhost", //本地
user: "root", // 用户名
password: "root",
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 * from student";
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
});
}
这是写到index代码,直接运行electron 可以拿到数据,打包完也可以拿到
原来是mysql模块也可以在electron环境下直接使用,因为之前项目是写好的vue-cli,我用electron打包的还是build后的文件,不能用,我就盯上了 electron-vue,测试一下
const mysql = require("mysql");
const pool = mysql.createPool({
host: "localhost", //本地
user: "root", // 用户名
password: "root",
database: "test",
});
//导出查询相关
var query = function(sql, callback) {
pool.getConnection(function(err, conn) {
if (err) {
callback(err, null, null);
} else {
conn.query(sql, function(qerr, vals, fields) {
//释放连接
// conn.release();
pool.releaseConnection(conn);
//事件驱动回调
callback(qerr, vals, fields);
});
}
});
};
//向外暴露方法
module.exports = {
pool,
query,
};
<template>
<div @click="open">SQL---------------</div>
</template>
<script>
import { query } from "../../sql";
export default {
data() {
return {};
},
methods: {
open() {
console.log(query)
query("SELECT * from student", function (err, vals, fields) {
console.log(vals);
});
},
},
};
</script>
<style scoped>
</style>
成功拿到数据,但是之前写好的项目要移到里面进行调整在打包,不过这个方法可行,希望可以给大家一点帮助