我已经被这个错误困住了大约一天
我正在使用带有html格式的node.js,其中输入类型=复选框,我希望mssql使用从表单中发布的数据来查询
让我们说
postData = [ '1','2','3','4','5' ]
JS代码:
var cfg = {
user: 'user',
password: '1234',
server: 'COMPUTERNAME\\SQLEXPRESS',
port: '1433',
database: 'test',
pool: {
max: 20,
min: 0,
idleTimeoutMillis: 30000
}
};
app.post('/select', urlencodedParser, function (req, res){
var in_dt = String();
for (var i = 0; i < req.body.postData.length; i++) {
if (i==0) {
in_dt += ("('" + req.body.postData[i] + "'")
}else if (i==((req.body.postData.length)-1)) {
in_dt += (", '" + req.body.postData[i] + "')")
}else {
in_dt += (", '" + req.body.postData[i] + "'")
}
};
sql.connect(cfg).then(pool => {
return pool.request()
.input('input_parameter', sql.NVarChar, in_dt)
.query('SELECT * FROM [test].[dbo].[Table1] where ID IN @input_parameter')
}).then(result => {
res.render('select', { qDt: result.recordset });
sql.close()
}).catch(err => {
console.log(err);
})
sql.on('error', err => {
console.log(err);
})
});
它给了我
'@input_parameter'附近的语法不正确
代码:'EREQUEST'
州:1
课程:15
但是当我复制查询和数据以在SSMS中运行时,它很好
你能帮我找到错误的位置并修复它吗?
答案 0 :(得分:0)
我认为它不会像这样工作,你必须使用sp_executesql。
创建如下的sql:
import grails.converters.*
import my.data.*
def accountJson = Account.get(1001) as JSON
println(accountJson.toString(true))
println(accountJson.toString(false))
将此sql作为输入参数传递。
并在查询中,将下面的查询(用您想要的列替换ID,标题)。
然后使用sp_executesql:
val preData = new java.util.ArrayList[String]
val currentData = new java.util.ArrayList[String]
def foreachRddFunc = (rdd:Rdd[String]) => {
rdd.collect().forecah(x => {
... ...
currentData.add(x)
... ...
})
//preData compare current data
... ...
preData.addAll(currentData)
currentData.clear
}
答案 1 :(得分:0)
您需要删除'字符
例)in_dt = (1,5,6,4,1)
没问题
in_dt = ('1','5','6','4','1')
不正常
var in_dt = String();
for (var i = 0; i < req.body.postData.length; i++) {
if (i==0) {
in_dt += ("(" + req.body.postData[i] + "")
}else if (i==((req.body.postData.length)-1)) {
in_dt += (", " + req.body.postData[i] + ")")
}else {
in_dt += (", " + req.body.postData[i] + "")
}
};
我希望它会对你有所帮助。