我正試圖把下面的MySqlCommand放在一起。MySQL命令 - 日期錯誤
string cols = "(DateTime, Ticker, Open, High, Low, Close, Volume, ReqCode, UpdateTime)";
string parametrs = "(?DateTime, ?Ticker, ?Open, ?High, ?Low, ?Close, ?Volume, ?ReqCode, ?UpdateTime)"; //, ?UpdateTime)";
try {
using (MySqlCommand cmd = new MySqlCommand()) {
cmd.Connection = myConn;
cmd.CommandText = "INSERT INTO " + schema + cols + " VALUES" + parametrs + "\n ON DUPLICATE KEY UPDATE ReqCode = ?ReqCode AND UpdateTime = ?UpdateTime";
cmd.Parameters.Add("?DateTime", MySqlDbType.DateTime).Value = aPriceBar.BarTimestamp;
cmd.Parameters.Add("?Ticker", MySqlDbType.VarChar).Value = aPriceBar.Ticker;
cmd.Parameters.Add("?Open", MySqlDbType.Decimal).Value = aPriceBar.Open;
cmd.Parameters.Add("?High", MySqlDbType.Decimal).Value = aPriceBar.High;
cmd.Parameters.Add("?Low", MySqlDbType.Decimal).Value = aPriceBar.Low;
cmd.Parameters.Add("?Close", MySqlDbType.Decimal).Value = aPriceBar.Close;
cmd.Parameters.Add("?Volume", MySqlDbType.UInt32).Value = aPriceBar.Volume;
cmd.Parameters.Add("?ReqCode", MySqlDbType.VarChar).Value = aPriceBar.ReqCode;
cmd.Parameters.Add("?UpdateTime", MySqlDbType.DateTime).Value = aPriceBar.ReqTimestamp;
cmd.ExecuteNonQuery();
}
} catch (MySqlException ex) {
Console.WriteLine(ex.Message);
}
當我運行程序時,我抓住以下異常:
「你在你的SQL語法錯誤;爲...正確的語法使用 ‘’附近2013- 10-28 16:23:26.379'
我知道肯定2013年10月28日在ReqTimestamp日期
我很驚訝,因爲插入查詢去救援人員到場。呃,當我沒有添加到查詢UpdateTime列的引用:查詢成功使用DateTime類型與另一列(日期時間)。然而,一個)aPriceBar.ReqTimestamp是一個DateTime,其中reqTimestamp = DateTime.UtcNow而b)中aPriceBar.BarTimestamp已由
DateTime datetime = DateTime.ParseExact(sFields[0], "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
'' 2013年10月28日16:23:26.379' :所產生的「 .379「之後讓我懷疑當我使用UctNow而不是使用CultureInfo.InvariantCulture的ParseExactsome時,一些時區信息被添加到DateTime實例中。
我用MySQL工作臺檢查了表定義,它看起來沒事。
不知道如何解決這個問題。 謝謝!
你有一個名爲'?UpdateTime'的列(最後一個)?你的意思是'UpdateTime'還是隻是一個錯字? – Steve
你在用什麼'?'表示您的參數而不是預期的'@'?或者是「可空」列? – Brian
設置一個斷點,實際的命令文本是什麼樣的?我敢打賭,這是史蒂夫所說的,你在第1行的'cols'字符串中有'UpdateTime'。 – sab669