【发布时间】:2013-10-01 09:28:26
【问题描述】:
我必须从字符串值构建查询字符串,例如:
connString += "INSERT INTO (...) VALUES ( "+
_cd.userName "," +
//and there i'd like to use ?: operators:
_cd.lastLogin == "Null" ? "null" : _cd.lastLogin ","
所以我的查询看起来像INSERT INTO (...) VALUES ('name', null, (...))
但是当我使用它时,它会切断我的字符串,所以它看起来像
",null,1,2,'name', (...)";
好吧,我知道我可以使用 var a,b,c,d 然后检查是否(_cd.lastLogin == "Null) a = null 并将其放入字符串中,但是变量很多。
正确的使用方法是什么?
@编辑: 代码:
string query = "INSERT INTO PersonLogin(...) " + Environment.NewLine +
"VALUES (" + _cD.userID + ","
+ "'" + _cD.number + "',"
+ "'" + _cD.dateCreate + "','"
+ _cD.lastLogin == "Null" ? ",null," : _cD.lastLogin + "',"
+ _cD.taken + ","
+ _cD.canLogin + ""+ Environment.NewLine;
【问题讨论】:
-
对不起,我忘了 - C#。
-
正确的方法是使用SqlParameters。像这样构建你的查询是疯狂的。
-
阿伦所说的。但要回答您的问题,可能会在
? :的所有用法周围加上括号。 -
好的,但是 textCommand 会给我像 INSERT INTO (...) VALUES (@par1, @par2) 这样的查询,对吗?我需要创建带有查询的字符串(来自 10 多个表),然后将该字符串作为脚本发送并执行到另一台服务器的数据库中。
-
@user13657 SQL 客户端可能能够进行这样的一批操作。即使不是,我也会在同一个事务中分别发送命令。
标签: c# ternary-operator