无法将数据插入sqlserver,nodejs

时间:2016-06-14 06:33:13

标签: javascript sql-server node.js

我刚刚创建了一个简单的程序来显示和插入数据库中的数据(sql server 2008)。我的代码显示数据。我无法插入数据。它在终端或浏览器中没有显示错误。

Here is my javascriptfile
var express = require('express');
var app = express();
app.use(express.static('public'));
app.get('/htm', function (req, res) {
res.sendFile( __dirname + "/" + "index.html" );
})
var sql = require("mssql");
var config = {
    user: 'pkp',
    password: 'pkp',
    server: 'PRAVEEN\\SQLEXPRESS', 
    database: 'myneww' 
 };
app.get('/process_get', function (req, res) {

   // Prepare output in JSON format
   response = {
   first_name:req.query.first_name,
   last_name:req.query.last_name
   };
 sql.connect(config, function (err) {
    if (err) console.log(err);
    var request = new sql.Request();
    console.log(req.query.first_name);
    var res=request.query('insert into Mytab values(req.query.first_name ,req.query.last_name)');
    });
});

app.get('/alldata', function (req, res) {   
 sql.connect(config, function (err) {   
    if (err) console.log(err);

    // create Request object
    var request = new sql.Request();

    // query to the database and get the records
    request.query('select * from Mytab', function (err, recordset) {

        if (err) console.log(err)

        // send records as a response
        res.send(recordset);

    });
});
});
 var server = app.listen(8081, function () {
  var host = server.address().address
  var port = server.address().port
  console.log("Example app listening at http://%s:%s", host, port)
})

这是我的html文件

<html>
<body>
<form action="http://127.0.0.1:8081/process_get" method="GET">
First Name: <input type="text" name="first_name">  <br>
Last Name: <input type="text" name="last_name">
<input type="submit" value="Submit">
</form>
</body>
</html>

我能够获取控制台中显示的值,表示从表单传递和检索值。但仍未插入数据库。

2 个答案:

答案 0 :(得分:1)

我在javascript方面不擅长,但我想下面这行不正确:

var res=request.query('insert into Mytab values(req.query.first_name ,req.query.last_name)');

它应该是这样的。

var res=request.query('insert into Mytab values(' + req.query.first_name + ',' + req.query.last_name +')');

如果没有,你有一个想法。

答案 1 :(得分:0)

首先,您没有正确地将值传递给查询,其次,您没有等待记录插入。添加我添加的回调。

app.get('/process_get', function (req, res) {
   //some code
   sql.connect(config, function (err) {
      if (err) console.log(err);
      var request = new sql.Request();
      console.log(req.query.first_name);
      request.query('insert into Mytab values('+req.query.first_name+','+req.query.last_name+')', function(err, recordset) {
           if (err) {
              console.log(err);
              return res.send('Error occured');
           }
           return res.send('Successfully inserted');
       });
   });
});

<强>更新

使用事务提交更改。

app.get('/process_get', function (req, res) {
   //some code
   var sqlConn = new sql.Connection(config);
   sqlConn.connect().then(function () {
      var transaction = new sql.Transaction(sqlConn);
      transaction.begin().then(function () {
         var request = new sql.Request(transaction);
         request.query('Insert into EmployeeInfo (firstName,secondName) values ('+req.query.first_name+','+req.query.last_name+')').then(function () {
            transaction.commit().then(function (recordSet) {
                console.log(recordSet);
                sqlConn.close();
                return res.send('Inserted successfully');
            }).catch(function (err) {
                console.log("Error in Transaction Commit " + err);
                sqlConn.close();
                return res.send('Error');
            });
        });
    });
});

请原谅我,如果有任何错字。