有可能看到“;文本“;NpgSqlCommand执行前的版本

本文关键字:版本 执行 文本 有可能 NpgSqlCommand | 更新日期: 2023-09-27 18:20:19

我想看看我要执行的命令的文本版本,它是使用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();

有可能看到“;文本“;NpgSqlCommand执行前的版本

准备好的语句的整个思想是参数在带外传输,而不是"替换"到SQL语句中。这样做是为了防止SQL注入攻击并达到优化目的。

如果只是出于调试目的,可以使用简单的regex手动将参数名称替换为适当的值。