2016-06-14 4 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> 
<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> 

는, 값이 통과하고 양식에서 검색하는 것을 의미 내 html 파일입니다. 그러나 여전히 데이터베이스에 삽입되지 않습니다.

+0

' "dabname (이름, 도시) 값을 삽입 ('", 나는 위와 여전히 같은 .. – kumbhanibhavesh

답변

1

나는 자바 스크립트 잘 모르겠지만, 아래 라인이 잘못된 것 같다 :

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

안녕하세요을 것 그 , 테이블에 삽입 된 데이터가 표시되지 않습니다. 오류를 보여줍니다. res.send는 터미널 – 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'); 
     }); 
    }); 
}); 

업데이트

를 사용하여 트랜잭션이 변경 사항을 적용합니다.

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

안녕을 시도 + 이름 + "', '"+ 도시 + "')"' – praveenkrishp

+0

에있는 함수가 아니며 업데이트 된 코드를 시도합니다. 이전 답변에 타이핑 오류가있었습니다. –

+0

브라우저에 성공적으로 삽입 된 것을 보여줍니다 (그렇지 않은 경우). 터미널에 일부 연결 오류가 표시됩니다. 연결이 닫혔습니다. 하지만 여전히/alldata를 줄 때, 나는 resultz를 얻고있다 .. – praveenkrishp

관련 문제