2016-06-14 5 views
3

Ich habe gerade ein einfaches Programm zum Anzeigen und Einfügen von Daten aus einer Datenbank (SQL Server 2008) gemacht. Mein Code macht die Anzeige von Daten. Ich kann keine Daten einfügen. Es zeigt keinen Fehler in Terminal oder Browser.Nicht in der Lage, Daten in sqlserver einzufügen, 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) 
}) 

Hier ist meine HTML-Datei

<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> 

Ich bin in der Lage, die Werte in der Konsole angezeigt zu bekommen, bedeuten Werte übergeben und aus der Form entnommen. Aber immer noch nicht in die Datenbank eingefügt.

+0

' "insert into dabname (Name, Stadt) values ​​(' "+ name +"', ' "+ Stadt +"')"' Das ist es – kumbhanibhavesh

Antwort

1

Ich bin in Javascript nicht gut, aber ich denke, die folgende Zeile falsch ist:

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

es so etwas wie das sein sollte.

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

Wenn nicht, haben Sie eine Idee.

+0

Hallo da ist, versucht ich, wie oben, nach wie vor die gleiche .. – praveenkrishp

0

Erstens haben Sie die Werte nicht richtig an die Abfrage übergeben und zweitens warten Sie nicht darauf, dass der Datensatz eingefügt wird. Fügen Sie den hinzugefügten Rückruf hinzu.

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

aktualisieren

Sie mit der Transaktion Änderungen zu übernehmen.

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

Verzeihen Sie mir, wenn es einen Tippfehler gibt.

+0

Hallo , Ich versuche, wie gezeigt, keine Daten in die Tabelle eingefügt .. Es zeigt einen Fehler res.send ist keine Funktion in der Klemme – praveenkrishp

+0

versuchen Sie den aktualisierten Code. frühere Antwort hatte Tippfehler. –

+0

seine Shows erfolgreich im Browser eingefügt (aber nicht). Im Terminal zeigt sich ein Verbindungsfehler: Verbindung ist geschlossen. Aber trotzdem, wenn ich/alldata gebe, erhalte ich das Ergebnis. – praveenkrishp