我需要幫助,因爲我無法理解我在這裏做錯了什麼。DateTime格式不正確/時間正在被截斷
初始設置:
MS Access database (.mdb).
MS Office 2010 installed.
MS SQL Server 2008
我建立例程從MS SQL Server 2008的記錄同步到MS Access數據庫。表是相同的,當涉及到表的佈局和字段
常規的部分數量有一個INSERT SQL
聲明
和部分SQL語句的代碼
//Query to execute
cmdToExecute.CommandText = "INSERT INTO " + tableName +
"(EquipmentID, TimeInspected) VALUES(" +
"'" + this._strEquipmentId.ToString() + "'," +
"'" + this._dtTimeInspected.Value.ToString("yyyy-MM-dd hh:mm:ss tt") + "'";
_stTimeInspected
被聲明爲sqlDateTime
的。
出於某種原因,我無法在MS Access數據庫表中獲得日期和時間。
當我使用的格式類似this._dtTimeInspected.Value.ToString("yyyy-MM-dd")
我可以得到日期,或 this._dtTimeInspected.Value.ToString("hh:mm:ss tt")
我能得到時間
但由於某種原因時被截斷時,我用這個:_dtTimeInspected.Value.ToString("yyyy-MM-dd hh:mm:ss tt")
我甚至嘗試使用參數化查詢
PARAMETERS [@EquipmentID] Text (255), [@TimeInspected] DateTime;
INSERT INTO VisualInspectionHistory (EquipmentID, , DateInspected, TimeInspected, RecordIsUpdated, DateSync, TimeSync)
SELECT [@EquipmentID] AS Expr1, [@TimeInspected] AS Expr2
/// <summary>
/// Purpose: Insert new record into database table
/// </summary>
/// <returns></returns>
/// <remarks></remarks>
public override bool Insert()
{
OleDbCommand cmdToExecute = new OleDbCommand();
cmdToExecute.CommandText = "VisualInspection_Insert";
cmdToExecute.CommandType = CommandType.StoredProcedure;
cmdToExecute.Connection = conMainConnection;
try
{
cmdToExecute.Parameters.Add(new OleDbParameter("@EquipmentID", (OleDbType)OleDbType.VarChar, 25)).Value = _strEquipmentID.ToString();
cmdToExecute.Parameters.Add(new OleDbParameter("@TimeInspected", (OleDbType)OleDbType.Date)).Value = (DateTime)(_dtTimeInspected);
if (bMainConnectionIsCreatedLocal)
{
//Open connction
conMainConnection.Open();
}
else
{
if (cpMainConnectionProvider.IsTransactionPending)
{
cmdToExecute.Transaction = cpMainConnectionProvider.CurrentTransaction;
}
}
//Execute query
iRowsAffected = cmdToExecute.ExecuteNonQuery();
return true;
}
catch (OleDbException ex)
{
//Some error occured. Bubble it to caller and encapsulate Exception object
throw ex;
}
catch (Exception ex)
{
//Some error occured. Bubble it to caller and encapsulate Exception object
throw ex;
}
finally
{
if (bMainConnectionIsCreatedLocal == true)
{
//Close connection
conMainConnection.Close();
}
cmdToExecute.Dispose();
}
}
任何幫助將不勝感激。
不能使用參數化的SQL?這樣你就可以避免所有的轉換... – 2012-02-10 20:10:32
我試過了。我在MS Access數據庫中創建了查詢。同樣的結果 – 2012-02-10 20:14:53
我不是建議在MS Access中創建查詢...我建議使用帶有參數的查詢,這是非常不同的。 – 2012-02-10 20:17:49