![](/img/trans.png)
[英]Filling an Empty DataTable gives SQL Exception “Invalid Column Name” — Which Doesn't make sense?
[英]SQL Statement Doesn't make sense
所以我正在使用一个名为json-sql https://github.com/2do2go/json-sql的节点模块
但最终结果是
sql.query
// insert into users (name, lastname, age, gender) values ($p1, $p2, 24, $p3);
sql.values
// { p1: 'John', p2: 'Snow', p3: 'male' }
有没有一种快速的方法可以使该SQL可读? 我想要一堆这样的语句,并将其制成一个.sql文件,以便稍后在sql服务器上运行
不幸的是,该库无法本地生成可执行MS SQL兼容语句。
有效的MS SQL准备语句如下所示:
sp_EXECUTEsql @statement=N'Select @p as t', @parameters = N'@p varchar(50)', @p=N'Test'
因此,在这种情况下,您需要做三件事:
options
参数将ValuesPrefix设置为@
而不是默认的$
sql.values
结果,并生成上述@parameters
的值以及每个单独的参数值。 看来您可以使用选项separatedValues: false
来获取不带占位符的纯SQL查询。
例如,在您的情况下:
var jsonSql = require('json-sql')({separatedValues: false});
sql.query
// insert into "users" ("name", "lastname", "age", "gender") values (\'John\', \'Snow\', 24, \'male\');
然后,您只需要替换不需要的字符(例如,双引号)即可;
我希望有人会觉得有用。
该模块显然想让你插入由关联数组所描述的值sql.values
成给出的查询字符串sql.query
。 这些特定sql.query
和sql.values
的结果将是
insert into users (name, lastname, age, gender) values ('John', 'Snow', 24, 'male')
它的外观与许多程序化数据库接口中存在的“预备语句”的概念相似,但实现方式不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.