I am using msnodesqlv8 package in Nodejs to connect to a SQL server database. Of course I installed the package and I already had a SQL database on a server. I used the required options for connection and succeeeded in retrieving records. To start with, My app.post code is:
const express=require('express');
const app=express();
const sql = require('msnodesqlv8');
const bodyParser = require('body-parser');
const connString="Driver={SQL Server Native Client 11.0};Server=myserver;Database=myDB;Uid=muUid;Pwd=myPwd;"
app.post('/persons', (req, res) => {
const formData = req.body;
try {
console.log("Posting");
// Create a new person record in the database
const query=`INSERT INTO persons (name, age, gender) VALUES (${formData.name}, ${
formData.age}, ${formData.gender})`;
console.log(`${formData.name}, ${formData.age}, ${formData.gender} will be written.`);
sql.query(connString, query,(err,rows)=>{
res.send(rows);
});
} catch (err) {
res.send(err);
}
});
HTML code:
<form id="newRecform">
<div class="row">
<div class="form-group col-md-6">
<label for="name">Name:</label>
<input class="form-control" type="text" name="name" id="name" required>
</div>
<div class="form-group col-md-2">
<label for="age">Age:</label>
<input class="form-control" type="number" name="age" id="age" required>
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<label for="gender">Gender:</label>
<select class="form-control" name="gender" id="gender" required>
<option value="">-- Select gender --</option>
<option value="Male">Male</option>
<option value="Female">Female</option>
<option value="Other">Other</option>
</select>
</div>
</div>
<br><br><br>
<button class="btn btn-info btn-sm col-md-2" style="border-radius: 3px;" type="submit">Add Patient</button>
</form>`
AJAX post code:
$("#newRecform").on("submit", function (e) {
e.preventDefault();
$.ajax({
url: 'http://localhost:5001/persons',
type: 'POST',
data: $(this).serialize() ,
success: function (data) {
alert('New Record added successfully!')
}
, error: function (jqXHR, textStatus, err) {
alert('Error ' + textStatus + ', err ' + err)
}
});
});
When I submit the form, it never executes the app.post. Even the 'console.log' command does not work inside the post code
I found the answer modify app.post code to:
app.post('/patients', (req, res) => {
const formData = req.body;
const query = 'INSERT INTO persons(name, age, gender) VALUES (?, ?, ?)';
const params = [`${formData.name}`, `${formData.age}`, `${formData.gender}`];
sql.query(connString, query, params, (err, rows) => {
if (err) {
console.error(err);
} else {
console.log('Rows affected:', rows);
}
});