【发布时间】:2014-08-05 22:24:13
【问题描述】:
一个问题...我在下面的示例中有一个代码...我必须将一些值插入数据库..但直接从数据行..我不想使用变量。所以我的问题是,有没有办法检查数据行中的值是否存在或是否为空,如果该值不存在我必须插入空或如果它为空,只需插入空...
例子:
myQuery = " INSERT INTO AGR3PL_CS (IDOC_NUM, PSEG_NUM, SEG_NUM, COMP01, GLNO01, NAME01) " +
" VALUES (" + Lidoc_num + ", '" +
PSEG_NUM + "','" +
SEG_NUM + "','" +
dr_art_custsuply["Id"] + "','" +
dr_art_custsuply["GLN"] + "','" +
dr_art_custsuply["Name"] + "')";
这是我不想用的方式……
if (!dr_art_custsuply.Table.Columns.Contains("GLN") || dr_art_custsuply["GLN"].ToString().Length <= 0)
{
gln = "";
}
else
{
gln = dr_art_custsuply["GLN"].ToString();
}
【问题讨论】:
-
不要这样写查询,改用parameters
-
是的,我知道那不是正确的方法..但是在其他“插入”命令中,我有 50 个参数要插入...
-
@CrBruno 参数数量有什么区别,究竟是什么?不过,有一些工具可以帮助解决这个问题 - dapper 让参数化变得疯狂变得容易。如果有的话,拥有 50 个参数而不是 6 个只是意味着有 8 倍的理由来正确地做到这一点 - 如果你不这样做,有人会破坏你的系统的方式是 8 倍。
-
即使忽略恶意用户,
dr_art_custsuply["Name"]包含单引号(例如,名为 O'Malley's Green Paint 的艺术品供应)是否不合理?不,将其转义存储并不是解决此问题的正确方法。
标签: c#