2016-06-14 3 views
3

Я только что сделал простую программу для отображения и вставки данных из базы данных (sql server 2008). Мой код отображает данные. Я не могу получить данные. Он не показывает ошибок в терминале или браузере.Не удалось вставить данные в sqlserver, nodejs

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> 

Я могу получить значение, отображаемое в консоли, означает значения передаются и извлекаются из формы. Но все равно не вставлен в базу данных.

+0

' "вставить в dabname (имя, город) значения (' "+ имя +"', ' "+ город +"')"' Вот это – kumbhanibhavesh

ответ

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 +')'); 

Если нет, у вас есть идея.

+0

Привет, я попытался, как указано выше, все тот же .. – praveenkrishp

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'); 
     }); 
    }); 
}); 

Update

Использование транзакций для фиксации изменений.

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'); 
      }); 
     }); 
    }); 
}); 

Простите меня, если есть опечатка.

+0

Hi , Я пытаюсь как показано, никакие данные не вставлены в таблицу. Он показывает ошибку. Res.send не является функцией в терминале – praveenkrishp

+0

попробуйте обновленный код. более ранний ответ имел ошибку ввода. –

+0

его показы успешно вставлены в браузере (но нет). В терминале отображается некоторая ошибка подключения: соединение закрыто. Но все же, когда я даю/alldata, я получаю результатz .. – praveenkrishp

Смежные вопросы