如何使用NodeJs插入SQL和使用params插入mssql库
我有两个数组,第一个包含insert的列,第二个包含de值如何使用NodeJs插入SQL和使用params插入mssql库,sql,node.js,sql-server,node-mssql,Sql,Node.js,Sql Server,Node Mssql,我有两个数组,第一个包含insert的列,第二个包含de值 const columns = ['columnName1','columnName2','columnName3','columnName4','columnName5','columnName6']; const values2 = ['test1', 'test2', 27, 1, 'an address', null]; module.exports = {columns, values2} 我正在尝试使用mmsql库进行
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:靠近“?”的语法不正确
我可以毫无问题地选择db,但语法有些地方似乎不太喜欢。至少你忘了用圆括号括起来
?
:
const result = await pool.request().query(`INSERT INTO [Test].[TableName] (${testData.columns}) VALUES (?)`, [[testData.values2]]);
由于我找不到一个示例,其中您将sql查询的参数传递给
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);
var cols=['col1','col2'];
var VAL=['a string',23];
const request=pool.request();
for(设i=0;i`@param{i}`);
const result=wait request.query(sqlquery);
您试图指示多个列,但仅指示一个值:一个值数组。您应该指示insert中的列数。不是节点mssql的用户,但在我看来,您应该查看.bulk
函数