0
我想查看我將要執行的命令的文本版本,該命令是使用parameters.add創建的 - 有沒有辦法做到這一點? (見下面註釋線)在執行之前是否可以看到NpgSqlCommand的「文本」版本?
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("Created命令:「+ CMD ????);
cmd.ExecuteNonQuery();
我明白這一點。我問的原因是我想準備一個具有多個值的插入語句。但我想使用「參數」來確保我發送正確的值。 – ManInMoon
正如@ anton-gogolev所說,參數不會被替換到您的查詢中 - 在任何時候都不會有包含所有參數的字符串。 Npgsql 3.0.4(尚未發佈)將提供SQL日誌記錄功能 - 包括參數 - 可以幫助你(參見https://github.com/npgsql/npgsql/issues/839)。但是,它會記錄所有語句,而不僅僅是您想要的語句。 –