nodejs + sqlite3 查询中文 不显示的问题
发布于 8个月前 作者 redfish88 1186 次浏览

初学node,想用express + sqlite3 做一个小项目,没想到在用 sqlite3 的时候查询出了问题 ###环境如下

  • OS win64
  • node v0.10.28
  • sqlite3 2.2.3 ###表结构: table : todo id : int pk title : varchar(100) ###已有数据: id title 1 起床 2 洗刷

###nodejs 代码

var sqlite3 = require(‘sqlite3’).verbose(); var db = new sqlite3.Database(‘todo.db’); db.all('select title from todo’,function(err,rows){
rows.forEach(function(row){
console.log(row.title);
}); });

这样结果 是 2行 空,如果把title 换成 id 则能正确打印 为 1 2

请教一下各位大侠这种情况如何解决?

3 回复

你可以先找个工具看看你的数据库里面的数据是否是正常的。

下面的代码是可以正常工作的。

var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database(':memory:');   
// 或者
// var db = new sqlite3.Database('todo.db');  

db.serialize(function() {
  // 建表
  db.run("CREATE TABLE IF NOT EXISTS todo (title TEXT)");

  // 插入数据
  var stmt = db.prepare("INSERT INTO todo(title) VALUES (?)");
  stmt.run('起床');
  stmt.run('洗刷');
  stmt.finalize();

  db.all("SELECT rowid AS id, title FROM todo", function(err, rows) {
    console.log(rows);  //  [ { id: 1, title: '起床' }, { id: 2, title: '洗刷' } ]
    rows.forEach(function (row) {
      console.log(row.title);
    });
  });

  // 或者
  // db.each("SELECT rowid AS id, title FROM todo", function(err, row) {
  //    console.log(row.id + ": " + row.title);
  // });
});

db.close();

@GuoZhang 是的,你的代码能够运行.兄台有nodejs-sqlite3模块的中文文档吗,或者相关的资料?

你好?请问你的问题解决了麽?我现在也遇到这个问题,新手,不知道如何解决这个问题。。。

回到顶部