【发布时间】:2022-07-21 17:22:57
【问题描述】:
我正在尝试使用 SQL 查询 SELECT * FROM btc WHERE date = '...' 作为字符串来获取一行数据(有两列)。
SQL从日期是我正在寻找的行中返回所有数据,并且它是正确的(我在DB浏览器中得到了想要的行)
但由于某种原因,我得到了这个输出:{}
任何想法有什么问题?这是我的代码:
const sqlite3 = require('sqlite3').verbose()
const db = new sqlite3.Database("./server/coin.db", sqlite3.OPEN_READWRITE, (err) =>{
if (err) return console.error(err.message);
console.log("connection successfull")
});
console.log("entered bitcoin query!");
let msg = "";
for (let m = 1; m<= 12; m++)
{
if (m==1 || m==3 || m==5 || m == 7 || m == 8 || m == 10 || m == 12)
{
for (let d = 1; d<= 31; d++)
{
if(d<10 && m<10)
{
sql = 'SELECT * FROM btc WHERE date = "2021-0' + m + "-0" + d + '"';
console.log(sql);
}
else if (m<10)
{
sql = 'SELECT * FROM btc WHERE date = "2021-0' + m + "-" + d + '"';
}
else if (d<10)
{
sql = 'SELECT * FROM btc WHERE date = "2021-' + m + "-0" + d + '"';
}
else
{
sql = 'SELECT * FROM btc WHERE date = "2021-' + m + "-" + d + '"';
}
msg = msg + JSON.stringify(db.run(sql, (err) =>{
if (err) return console.error(err.message);
}));
}
}
if(m==4 || m==6 || m==9 || m==11)
{
for (let d = 1; d<= 30; d++)
{
if(d<10 && m<10)
{
sql = 'SELECT * FROM btc WHERE date = "2021-0' + m + "-0" + d + '"';
}
else if (m<10)
{
sql = 'SELECT * FROM btc WHERE date = "2021-0' + m + "-" + d + '"';
}
else if (d<10)
{
sql = 'SELECT * FROM btc WHERE date = "2021-' + m + "-0" + d + '"';
}
else
{
sql = 'SELECT * FROM btc WHERE date = "2021-' + m + "-" + d + '"';
}
msg = msg + JSON.stringify(db.run(sql, (err) =>{
if (err) return console.error(err.message);
}));
}
}
if (m == 2)
{
for (let d = 1; d<= 28; d++)
{
if (d<10)
{
sql = 'SELECT * FROM btc WHERE date = "2021-0' + m + "-0" + d + '"';
}
else
{
sql = 'SELECT * FROM btc WHERE date = "2021-0' + m + "-" + d + '"';
}
msg = msg + JSON.stringify(db.run(sql, (err) =>{
if (err) return console.error(err.message);
}));
}
}
console.log(msg);
}
res.json({ message: msg });
db.close((err) =>{
if (err) return console.error(err.message);
});
});
【问题讨论】: