【问题标题】:Why can't my Nodejs application cannot see my sqlite3 database column?为什么我的 Nodejs 应用程序看不到我的 sqlite3 数据库列?
【发布时间】:2022-01-06 16:09:54
【问题描述】:

没有与数据库或表相关的错误,但它没有看到列。这是错误: 节点服务器正在运行.. SQLITE_ERROR:没有这样的列:场景

这是桌子:

CREATE TABLE animalStream (
id INTEGER PRIMARY KEY AUTOINCREMENT,
cascade_name TEXT NOT NULL,
enclosre_name TEXT NOT NULL,
scene TEXT NOT NULL,
sensorCamAddress TEXT NOT NULL,
streamerCamAddress TEXT NOT NULL,
duration INTEGER NOT NULL
);

下面的 Nodejs 代码允许我从 HTML 表单接收数据

 const path=require('path');
  const sqlite3 = require("sqlite3").verbose();
  const db_name = path.join(__dirname, "wildlife.db");
  const db = new sqlite3.Database(db_name);

var express = require('express');
var app = express();

var bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: false }));

app.get('/', function (req, res) {
    res.sendFile('/home/harry/interface/in9.html');
});

app.post('/submit-student-data', function (req, res) {
  var scene = req.body.scene 
  var cascade_name = req.body.cascade_name;
  var enclosre_name = req.body.enclosre_name;
  var sensorCamAddress = req.body.sensorCamAddress
  var streamerCamAddress = req.body.streamerCamAddress
  var duration = req.body.duration;

db.run(`INSERT INTO animalStream(scene) VALUES(scene)`, ['C'], function(err) {
    if (err) {
      return console.log(err.message);
    }
    // get the last insert id
    console.log(`A row has been inserted with rowid ${this.lastID}`);
  });

});/////////////////

var server = app.listen(3000, function () {
    console.log('Node server is running..');
});

<!DOCTYPE html>

<html><body style="background-color:black;"><blockquote><blockquote>
        <form action="/submit-student-data" method="post">
<p style="color:white;">Cascade file name:<br>
<input type = "text" name = "cascade_name" /></p>

<p style="color:white;">Enclosure name:<br>
<input type = "text" name = "enclosre_name" /></p>

<p style="color:white;">Scene number:<br>
<input type = "text" name = "scene" /></p>

<p style="color:white;">Sensor Camera IP address:
<br> <input type = "text" name = "sensorCamAddress" /></p>
                                                                                                               >
<p style="color:white;">Streamer Camera IP address:
<br> <input type = "text" name = "streamerCamAddress" /></p>

<p style="color:white;">Scene duration:
<br><input type = "text" name = "duration" /></p>
         <br>
        <center> <INPUT type="submit" value="Send">  <INPUT type="reset"></center>
         </form>
</blockquote></blockquote>
</body></html>

正如我所提到的,它似乎可以很好地获取数据库和表。由于某种原因,它只是看不到这些列。如有任何意见,我将不胜感激。

【问题讨论】:

    标签: html node.js express node-sqlite3


    【解决方案1】:

    我认为您必须像这样编写查询:

    `INSERT INTO animalStream (scene) VALUES("${scene}")`
    

    而且您没有为设置NOT NULL的其他列设置任何值

    【讨论】:

    • db.run(INSERT INTO animalStream(cascade_name) VALUES("${cascade_name}"), ['C'], function(err) { 摆脱 ['C'],似乎以某种方式阻止了插入。我删除了它,并使用了你的示例,它成功了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2021-12-28
    相关资源
    最近更新 更多