2012-01-31 114 views
0

我試圖插入一個日期時間值到一個DataTable,然後使用OleDbDataAdapter的更新(數據表)方法將其加載到我的數據庫..但我不斷收到條件表達式中「數據類型不匹配「。錯誤。我在表訪問的數據類型是:更新日期時間

ID Number 
Nombre_Proyecto Text 
Codigo_Ine_Proy Text 
Cliente text 
Fecha_Creacion Datetime (short date) 

根據訪問短日期是MM/DD/YYY,至極我的datetime/toshortdatestring方法適合?至少我這麼認爲。

任何幫助,將不勝感激。這裏是我的代碼:

插入的OleDbCommand FOT數據適配器:

sql = "PARAMETERS [@Fecha_Creacion] datetime;INSERT Into [Proyectos] ([ID], [Nombre_Proyecto],[Codigo_Ine_Proy],[Cliente],[Fecha_Creacion]) Values (@ID,@Nombre_Proyecto,@Codigo_Ine_Proy,@Cliente,@Fecha_Creacion)"; 
    Comando = new OleDbCommand(sql, conn); 
    Comando.Parameters.Add("@Nombre_Proyecto", OleDbType.VarWChar, 500, "Nombre_Proyecto"); 
    Comando.Parameters.Add("@Codigo_Ine_Proy", OleDbType.VarWChar, 500, "Codigo_Ine_Proy"); 
    Comando.Parameters.Add("@Cliente", OleDbType.VarWChar, 500, "Cliente"); 
    Comando.Parameters.Add("@Fecha_Creacion", DbType.DateTime); 
    Comando.Parameters.Add("@ID", OleDbType.Integer, 10000, "ID"); 

在那裏我對我的DataTable創建DataRow部分:

DataRow newRow = Tabla_Proyectos_BD_General.NewRow(); 
    Max_IDs["Proyectos"] += 1; 
    newRow["ID"] = Max_IDs["Proyectos"]; 
    newRow["Nombre_Proyecto"] = textBox2.Text; 
    newRow["Codigo_Ine_Proy"] = textBox1.Text; 
    newRow["Cliente"] = textBox3.Text; 
    string x = System.DateTime.Now.ToShortDateString(); 
    newRow["Fecha_Creacion"] = x; 
    Tabla_Proyectos_BD_General.Rows.Add(newRow); 

回答

0
string x = System.DateTime.Now.ToShortDateString(); 

這是一個字符串,不是日期時間!因此不匹配。

NEWROW [ 「Fecha_Creacion」] = System.DateTime.Now;

而且你的參數化查詢只應該爲你做它。

,如果你想顯示你把在那裏shortdatestring格式的日期(whate以往任何時候都上,做了格式化的電腦,根據需要把它作爲一個日期,然後格式。

PS,如果你想傳遞一個日期作爲字符串到數據庫,使用格式YYYY-MM-DD或YYYYMMDD,任何比通用和明確的日期格式,另一種是隻是等待發生的錯誤,並且永遠不會做,除非你不得不這樣做。

輸入查詢他們的時候,從字符串轉換爲datetime是你應該做的第一件事輸出的日期時,將它們轉換成字符串以某種格式

提示是最後的操作。

後評論 簡單的解決方案被修改是

Comando.Parameters.Add( 「@ Fecha_Creacion」,DbType.DateTime,System.DateTime.Now);

+0

我得到這個例外,當我做到這一點,但我不知道爲什麼參數!!數據類型錯誤「@Fecha_Creacion」。 – user1181589 2012-02-01 00:44:06

+0

我試過在參數中更改dbtype.datetime,但沒有成功 – user1181589 2012-02-01 21:51:28

+0

在op令人費解的評論後編輯 – 2012-02-02 16:03:52

0

你應該只使用

newRow["Fecha_Creacion"] = System.DateTime.Now; 

什麼你在訪問看到的是「格式化的日期」。當通過OleDB進行交互時,您需要使用DateTime而不是格式化的字符串。