我正在使用ServiceStack.ormLite.dll的3.8.5.0版本。ORMLite的ExecuteSQL調用中dateTime.Now的格式是什麼?
我們正在使用postgreSql服務器。我們的postgreSQL服務器的語言環境設置爲en-GB(在postgres.conf中,我們將dateStyle參數設置爲「ISO,DMY」)。
在我們的web應用程序中,當我們通過一個原始的SQL語句:
var insertSql = string.Format("insert into ReportTable values (
'{0}', '{1}',)",
message.Id, DateTime.Now);
和使用的ExecuteSQL(insertSql),我得到的日期範圍過時的Postgres裏的日期是MDY和數據庫期望DMY。
但是,如果我做的:
var insertSql = string.Format("insert into ReportTable values (
'{0}', 'now',)",
message.Id);
插入工作。
我知道我可以設置
<globalization Culture="en-GB"/>
不過,我有一些線程做一些後臺處理,我將不得不改變他們的文化也得到這個工作。
任何想法,如果有任何其他方式我可以解決ormLite庫上的這個問題?
爲什麼你想要傳遞原始SQL,而不是使用參數化SQL?此時,您不必擔心轉換*或* SQL注入攻擊。 –
謝謝喬恩。我意識到通過使用參數化SQL解決了轉換問題,但甚至沒有考慮SQL注入。我會改變我的代碼來迎合這一點。謝謝。 –