Javascript 在SQLite和Node.js中向表插入行

Javascript 在SQLite和Node.js中向表插入行,javascript,node.js,sqlite,Javascript,Node.js,Sqlite,我正在学习Node.js的SQLite。目前我正处于一个非常开始的阶段。 我试图将行插入到表中,但出现错误。我使用的代码来自教程 代码如下: const sqlite3=require('sqlite3').verbose(); 让db=newsqlite3.Database('./Database/sq-lite Database.db',(err)=>{ 如果(错误){ 返回console.log(错误消息); } log(“已连接到数据库!”) }); //创建名为“users”的表,该

我正在学习Node.js的SQLite。目前我正处于一个非常开始的阶段。 我试图将行插入到表中,但出现错误。我使用的代码来自教程

代码如下:

const sqlite3=require('sqlite3').verbose();
让db=newsqlite3.Database('./Database/sq-lite Database.db',(err)=>{
如果(错误){
返回console.log(错误消息);
}
log(“已连接到数据库!”)
});
//创建名为“users”的表,该表有两列:1-“name”,其中值的类型为“text”,
//和“整数”类型的“年龄”
//db.run('CREATE TABLE users(name text,age integer)')//当此行未连接时,我收到不同的错误:“表用户已存在”
//在“用户”表中插入两行
db.run('插入用户(姓名、年龄)值(“Riko”,29)”,['C'],(err)=>{
如果(错误){
返回console.log(错误消息);
}
log('将行添加到表:${this.lastID}');

})
在插入任何数据之前,首先尝试创建表用户(这可能导致错误):

然后通过在值中放置问号作为占位符将数据插入表中。然后使用
db.run
的第二个参数将实际名称值传递给sqllite

    db.run('INSERT INTO users(name) VALUES(?)', ['Riko'])

您还可以使用数据库浏览器了解出现问题的原因:。

在插入任何数据之前,请先尝试创建表用户(这可能导致错误):

然后通过在值中放置问号作为占位符将数据插入表中。然后使用
db.run
的第二个参数将实际名称值传递给sqllite

    db.run('INSERT INTO users(name) VALUES(?)', ['Riko'])

您还可以使用数据库浏览器进一步了解出现问题的原因:。

首先,您必须检查数据库'/database/sq-lite database.db'中的
user
表。 如果没有:


db.run('CREATE TABLE users(name TEXT,age INT))
首先,您必须检查db'/database/sq-lite database.db'中的
user
表。 如果没有:


db.run('CREATE TABLE users(name TEXT,age INT))如果必须为包含大数据的多个列插入数据。如果您想要处理db的良好Ui,请参见查询

将sqlitestudio用于基于userface的Sqlite db视图:

首先检查数据库和表是否存在,然后插入多个值:

var data=[
['Mungade','26'],
['Nagnath','27']
]

for (var i=0;i<data.length; i++){
     db.run("INSERT INTO user(name,age) values(?,?)",data[i][0],data[i][1],(err,rows)=>{
     if(err){
        throw err;
     }
      console.log('Insert Success');
 })
}
var数据=[
['Mungade','26'],
['Nagnath','27']
]
对于(var i=0;i{
如果(错误){
犯错误;
}
console.log('Insert Success');
})
}

这对我很有用。

如果您必须为包含大数据的多个列插入数据。如果您想要处理db的良好Ui,请参见查询

将sqlitestudio用于基于userface的Sqlite db视图:

首先检查数据库和表是否存在,然后插入多个值:

var data=[
['Mungade','26'],
['Nagnath','27']
]

for (var i=0;i<data.length; i++){
     db.run("INSERT INTO user(name,age) values(?,?)",data[i][0],data[i][1],(err,rows)=>{
     if(err){
        throw err;
     }
      console.log('Insert Success');
 })
}
var数据=[
['Mungade','26'],
['Nagnath','27']
]
对于(var i=0;i{
如果(错误){
犯错误;
}
console.log('Insert Success');
})
}

它对我有用。

一个可能的答案可能是数据库引用不正确。如果是这种情况,它将创建一个名为'databasesq-lite-data-base.DB'的空数据库,由于该数据库是空的,它将找不到表

因此,连接可以工作,但它不是您希望的DB


在windows资源管理器中,查看是否在某个位置创建了具有上述名称的空数据库。

可能的答案是数据库引用不正确。如果是这种情况,它将创建一个名为'databasesq-lite-data-base.DB'的空数据库,由于该数据库是空的,它将找不到表

因此,连接可以工作,但它不是您希望的DB


在windows资源管理器中,查看是否在某个地方创建了具有上述名称的空数据库。

如果使用参数化查询,['C']是有意义的。如果您的查询是插入到用户(姓名、年龄)值(?,),那么您将值数组指定为['Riko','29',],这只是参数化的插入查询。在本例中,您在查询中附加值,因此不需要使用参数数组。如果您使用参数化查询,['C']是有意义的。如果您的查询是插入到用户(姓名、年龄)值(?,),那么您将值数组指定为['Riko','29',],这只是参数化的插入查询。在本例中,您可以在查询中附加值,因此无需使用参数数组。