我有一個應用程序將值存儲在Jet Blue數據庫中。我構建和問題,查詢如:什麼是「現在」的ADO.net參數化?
INSERT INTO Hisotry (DeathDate, Frob, Grobber)
VALUES (Now(), "Unilatteral phase detractor's", "Sinusoidal depleneration")
現在我遷移到不同的數據庫,我想這可能是時間使用
疼痛的屁股
看中參數:
void Trunnions(DbConnection connection, String frob, String grobber)
{
String sql =
"INSERT INTO Hisotry (DeathDate, Frob, Grobber)" + "\r\n"+
"VALUES (@deathDate, @frob, @grobber)";
using (DbCommand cmd = connection.CreateCommand())
{
cmd.CommandText = sql;
DbParameter param;
param = cmd.CreateParameter();
param.Name = "@deathDate";
param.DbType = DbType.DateTime;
param.Value = "Now()";
cmd.Parameters.Add(param);
param = cmd.CreateParameter();
param.Name = "@frob";
param.DbType = DbType.StringFixedLength;
param.Value = frob;
cmd.Parameters.Add(param);
param = cmd.CreateParameter();
param.Name = "@grobber";
param.DbType = DbType.String;
param.Value = grobber;
cmd.Parameters.Add(param);
cmd.ExecuteNonQuery();
}
}
當然,試圖使用Now()
作爲DbType.DateTime
參數的值是無效的。
我可以用:
param = cmd.CreateParameter();
param.Name = "@deathDate";
param.DbType = DbType.DateTime;
param.Value = DateTime.Now;
cmd.Parameters.Add(param);
除了這不是正確的 - 它使用本地計算機的時鐘,而不是服務器的。
我問的唯一原因是因爲我不知道Now()
的新數據庫引擎的語法是什麼。我知道有一些可以使用:
getdate()
getutcdate()
SYSDATETIME()
SYSUTCDATETIME()
SYSDATETIMEOFFSET()
CURRENT_TIMESTAMP()
NOW()
LOCALTIMESTAMP()
我記得我花了小時在2008年要弄清楚使用什麼藍色噴氣機。我寧願有ADO.net解決方案。
你有控制權架構?如果是,那麼只需使用默認值Now()(或其在數據庫引擎中的相當值)創建列,並且不要插入它。 – ChrisWue
@ChrisWue我不知道。此外,我試圖找出如何參數化當前手工製作的查詢 –