node 操作 mysql 能插入记录,但是查询不到结果,求解???
发布于 3年前 作者 shaman 1881 次浏览

db.js 代码:

console.log("开始连接mysql......");
var conn = require("mysql").createClient({
    'host':'localhost',
    'port':'3306',
    'user':'root',
    'password':''
});

ClientConnectionReady = function(client){
client.query('USE nodejs',function(error,results){
    if(error){
        console.log("数据库连接错误:" + error.message);
        client.end();
        return;
    }
    console.log("已经建立到数据库:nodejs的连接");

    //插入一条测试数据
    var sql = "INSERT INTO test SET id=?, user_name=?, nick_name=?",
        values = [ , "jim", "jimmy"];
    client.query(sql, values, function(error, results){
        if(error) {
            console.log("插入记录出错: " + error.message);
            client.end();
            return;
        }
        console.log('Inserted: ' + results.affectedRows + ' row.');
        console.log('Id inserted: ' + results.insertId);
    });

    getData(client);
});
}

getData = function(client){
var sql = "select * from test";
client.query(sql, function selectCb(error, results, fields){
    if(error){
        console.log('查询出错:'+error.message);
        client.end();
        return;
    }
    console.log("查询表:test");
    //console.log(fields);
    console.log('查到结果:' + results.length + "条");
    if(results.length > 0){ //查看第一条记录
        var firstResult=results[0];
        console.log('id:' + firstResult['id']);
        console.log('user_name:' + firstResult['user_name']);
        console.log('nick_name:' + firstResult['nick_name']);

    }
});
client.end();
console.log("关闭数据库连接");
}

ClientConnectionReady(conn);
13 回复
  • 你这个代码写的不太规范啊,getData加var
  • 数据库里有数据了嘛?getData(client);放到client.query的回调里试试

数据库里本来有5条我手动添加的数据 去掉getData 把查询操作放在 client.query 的回调里也试过 查询操作还是放在插入操作的后面执行的 仍旧查询不到记录 update操作也是正常的 就查询出问题 郁闷

@shaman 不是吧,应该你的代码有问题,你写个简单点的插入,然后回调里查询下看能不能出数据,我一直在用mysql这个库啊,没问题

@sumory 嗯 , 我再调试调试,看看代码哪里有问题

@sumory 晕,我在家里自己电脑上重装的mysql模块,能查询出结果了 , 代码没有问题,看来是之前在公司机子上的mysql模块有问题

client.end();

console.log(“关闭数据库连接”);
这个最好放在 query 的回调里面吧,因为是异步的

嗯 谢谢提醒。 问题又来了,今天回到公司我重装了 mysql 模块 , 硬是出现之前的问题 查询不出结果 ,增删改操作都可以。然后我在虚拟机ubuntu里 同样的代码和我在家里机器上win7都能查出结果, 出问题的机器是xp的 难道和操作系统有关系??

@shaman 这。。。可以增删说明 mysql 模块是没问题的,没那么囧吧,就不能查询

@fantasyni 我凌乱了,原来是公司机器上的mysql有问题,之前用的wamp5, 很多配置都有改动,我就重装了一下,都正常了。 感谢两位。

难道那个查询的方法调用不需要放到插入的回调函数里面吗? getData(client); 这样也无法保证你里面插入进去,就能查询出来了。

这里如果要想查询出的数据包含之前插入的数据 ,只需将查询操作放在插入操作后面就可以。

回到顶部