检查值是否存在或为空

CrB*_*uno 2 c#

一个问题...我在下面的示例代码...我要插入直接从数据row..I一些值到database..but不想使用variables.So我的问题是,是否有检查数据行中的值是否存在或者是否为null的方法,如果该值不存在,我必须插入null或者如果它为null则只插入null ...

这个例子:

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"] + "')";
Run Code Online (Sandbox Code Playgroud)

这是我不想用的方式......

if (!dr_art_custsuply.Table.Columns.Contains("GLN") || dr_art_custsuply["GLN"].ToString().Length <= 0)
{
    gln = "";
}
else
{
    gln = dr_art_custsuply["GLN"].ToString();
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 7

  1. 参数
  2. DBNull.Value

例如(因为你使用的是oracle):

cmd.CommandText = @"
INSERT INTO AGR3PL_CS (IDOC_NUM, PSEG_NUM, SEG_NUM, COMP01, GLNO01, NAME01)
VALUES (:IDOC_NUM, :PSEG_NUM, :SEG_NUM, :COMP01, :GLNO01, :NAME01)";
cmd.Parameters.AddWithValue("IDOC_NUM", Lidoc_num);
cmd.Parameters.AddWithValue("PSEG_NUM", PSEG_NUM);
cmd.Parameters.AddWithValue("SEG_NUM", SEG_NUM);
cmd.Parameters.AddWithValue("COMP01", dr_art_custsuply["Id"] ?? DBNull.Value);
cmd.Parameters.AddWithValue("GLNO01", dr_art_custsuply["GLN"] ?? DBNull.Value);
cmd.Parameters.AddWithValue("NAME01", dr_art_custsuply["Name"] ?? DBNull.Value);
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

或者如果您想通过"dapper"获得一些帮助(因为您提到参数的数量是个问题):

connection.Execute(@"
INSERT INTO AGR3PL_CS (IDOC_NUM, PSEG_NUM, SEG_NUM, COMP01, GLNO01, NAME01)
VALUES (:Lidoc_num, :PSEG_NUM, :SEG_NUM, :Comp, :Gln, :Name)",
    new { Lidoc_num, PSEG_NUM, SEG_NUM,
        Comp = (int?)dr_art_custsuply["Id"],
        Gln = (string)dr_art_custsuply["GLN"],
        Name = (string)dr_art_custsuply["Name"] });
Run Code Online (Sandbox Code Playgroud)