如何使用NodeJs和带有参数的mssql库在SQL中插入

我有2个数组,第一个包含用于插入的列,第二个包含de值

const columns = ['columnName1','columnName2','columnName3','columnName4','columnName5','columnName6'];

const values2 = ['test1','test2',27,1,'an address',null];

module.exports = {columns,values2}

我正在尝试使用mmsql库进行插入,但是甚至文档中都没有包含要插入值的多列示例。

这是我插入的样本

let pool = await sql.connect(config)
      

const result = await pool.request().query(`INSERT INTO [Test].[TableName] (${testData.columns}) VALUES ?`,[[testData.values2]]);
console.dir(result);

我收到以下错误:

RequestError:“?”附近的语法不正确。

我能够毫无问题地选择数据库,但是它似乎不喜欢语法。

iCMS 回答:如何使用NodeJs和带有参数的mssql库在SQL中插入

至少您忘记用圆括号包裹?

const result = await pool.request().query(`INSERT INTO [Test].[TableName] (${testData.columns}) VALUES (?)`,[[testData.values2]]);

,

由于找不到单个示例,您将sql-query的参数传递给query函数或在其文档中使用?作为占位符,所以我不确定,node-mssql是否支持此功能。但是,如果这样做,您至少应该在添加值时在sql语句中创建尽可能多的?

var cols = [...]; //your columns
const sqlquery = `insert into sometable (${cols}) values (${new Array(cols.length).fill('?')})`;

记录的方式是使用输入参数

await pool.request()
   .input('p1',sql.Int,value1)
   .input('p2',sql.VarChar(50),value2)
   .query('insert into sometable(col1,col2) values(@p1,@p2)');

要保持这种灵活性,您可以使用类似以下的内容

var cols = ['col1','col2'];
var vals = ['a string',23];

const request = pool.request();
for (let i = 0; i < vals.length; i++)
  request.input(`param_${i}`,vals[i]);  //if you skip the parametertype,mssql will guess it from the value
const sqlquery = `insert into sometable(${cols}) values (${vals.map((_,i) => `@param_${i}`)`;

const result = await request.query(sqlquery);
本文链接:https://www.f2er.com/1502876.html

大家都在问