在执行之前是否可以看到NpgSqlCommand的“文本”版本?

时间:2015-11-03 15:07:48

标签: c# npgsql

我希望看到我将要使用parameters.add创建的命令的文本版本 - 有没有办法做到这一点? (见下面的评论说明。)

   NpgsqlConnection conn = new NpgsqlConnection(connstring);
    conn.Open();
    NpgsqlCommand cmd = new NpgsqlCommand("insert into \"Min_Bar_Price_Data\" values(:SEC_ID, :PX_OPEN, :PX_HIGH, :PX_LOW, :PX_LAST, :PX_VOLUME, :Date)", conn);


cmd.Parameters.Add(new NpgsqlParameter("SEC_ID", DbType.Int32));
cmd.Parameters.Add(new NpgsqlParameter("PX_OPEN", DbType.Double));
cmd.Parameters.Add(new NpgsqlParameter("PX_HIGH", DbType.Double));
cmd.Parameters.Add(new NpgsqlParameter("PX_LOW", DbType.Double));
cmd.Parameters.Add(new NpgsqlParameter("PX_LAST", DbType.Double));
cmd.Parameters.Add(new NpgsqlParameter("PX_VOLUME", DbType.Double));
cmd.Parameters.Add(new NpgsqlParameter("Date", DbType.DateTime));


    cmd.Parameters["SEC_ID"].Value = sec_ID;
    cmd.Parameters["PX_OPEN"].Value = 0.0;
    cmd.Parameters["PX_HIGH"].Value = 0.0;
    cmd.Parameters["PX_LOW"].Value = 0.0;
    cmd.Parameters["PX_LAST"].Value = d.Close;
    cmd.Parameters["PX_VOLUME"].Value = 1.0;
    cmd.Parameters["Date"].Value = d.DT;
  

// Console.WriteLine(“创建命令:”+ cmd。????);

   cmd.ExecuteNonQuery();

1 个答案:

答案 0 :(得分:0)

prepared statements的整个想法是传递参数out-of-band,而不是“替换”到SQL语句中。这样做是为了防止SQL注入攻击并进行优化。

如果仅用于调试目的,您可以使用简单的正则表达式手动将参数名称替换为适当的值。