如何使用节点js(ibm_db)将数据插入db2

时间:2016-12-16 05:17:01

标签: node.js express db2 ibm-cloud

您好任何人都可以举例说明如何在nodejs中使用insert语句。我可以使用选择查询。但对于插入查询,我得到的结果为[]。没有看到错误但是这些值没有添加到原始表中。我正在使用db2,ibm_db,express,nodejs和angularjs。

3 个答案:

答案 0 :(得分:2)

我刚才写了blog entry on using DB2 and node.js on Bluemix。它包含INSERT语句的代码。

作为插入

的一部分
  1. 首先准备声明,
  2. 然后绑定要插入的值和
  3. 最后执行声明。
  4. 以下是相关的代码段,full context is in the blog

    exports.insertIP = function(ibmdb,connString,ipinfo) {   
                    console.log("insertIP called",ipinfo);    
                    ibmdb.open(connString, function(err, conn) {   
                       if (err ) {  
                        res.send("error occurred " + err.message);  
                       }  
                       else {  
                        // prepare the SQL statement  
                        conn.prepare("INSERT INTO IP.VISITORS(vtime,ip,country_code,country,region_code,region,city,zip,latitude,longitude,metro,area) VALUES (current timestamp,?,?,?,?,?,?,?,?,?,?,?)", function(err, stmt) {  
                          if (err) {  
                           //could not prepare for some reason  
                           console.log(err);  
                           return conn.closeSync();  
                          }
                      //Bind and Execute the statment asynchronously  
                      stmt.execute([ipinfo["ip"],ipinfo["country_code"],ipinfo["country_name"],ipinfo["region_code"],ipinfo["region_name"],ipinfo["city"],ipinfo["zipcode"], ipinfo["latitude"], ipinfo["longitude"],ipinfo["metro_code"],ipinfo["area_code"]], function (err, result) {  
                       console.log(err);  
                       // Close the connection to the database  
                       conn.close(function(){  
                        console.log("Connection Closed");  
                       });  
                      });  
                    });  
                  }  
              })};  
    

答案 1 :(得分:1)

我建议并推荐(作为node-ibm_db的成员之一)遵循node-ibm_db github存储库(https://github.com/ibmdb/node-ibm_db),我们更新了README文档以及要执行的API列表特别的任务。

对于您的上述查询,您可以使用" .prepare(sql,callback)"或" .prepareSync(sql)" API(根据您的要求异步/同步调用),下面是特定API文档的附加代码段和URL链接。

var ibmdb = require("ibm_db"),
cn ="DATABASE=dbname;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=dbuser;PWD=xxx";

ibmdb.open(cn,function(err,conn){
    conn.prepare("insert into hits (col1, col2) VALUES (?, ?)",
    function (err, stmt) {
        if (err) {
            //could not prepare for some reason
            console.log(err);
            return conn.closeSync();
        }

        //Bind and Execute the statment asynchronously
        stmt.execute(['something', 42], function (err, result) {
            if( err ) console.log(err);
            else result.closeSync();

            //Close the connection
            conn.close(function(err){});
        });
    });
});

API文档(Github URL):https://github.com/ibmdb/node-ibm_db#-8-preparesql-callback

答案 2 :(得分:0)

尝试使用以下命令安装jt400  npm install node-jt400-保存

使用以下代码将数据插入表名称foo。 请点击链接https://www.npmjs.com/package/node-jt400以获取详细信息

pool
  .insertAndGetId('INSERT INTO foo (bar, baz) VALUES(?,?)',[2,'b'])
  .then(id => {
    console.log('Inserted new row with id ' + id);
});