2015-07-22 27 views
0

我在數據庫表中有一個「日期」列,其數據類型是「datetime」。錯誤:最好的重載方法匹配有一些無效的參數,並且不能隱式地將類型'字符串'轉換爲'System.DateTime'

我想插入當前日期&時間。 我使用下面的代碼:

Default.aspx.cs代碼

protected void btnInvoice_Click(object sender, EventArgs e) 
{ 
    DateTime date = DateTime.Now.ToString(); 
    SDM.Invoice.InsertInvoice(date); 
} 

「SDM.Invoice.cs」 類代碼

protected SDM_Tran_GenerateInvoiceTableAdapter Adapter 
{ 
    get 
    { 
     if (_GenerateInvoiceTableAdapter == null) 
      _GenerateInvoiceTableAdapter = new SDM_Tran_GenerateInvoiceTableAdapter(); 

     return _GenerateInvoiceTableAdapter; 
    } 
} 

public string InsertInvoice(DateTime Date) 
{ 
    string query = Convert.ToString(Adapter.InsertInvoice(Date); 
    return query; 
} 

當我運行後我的項目部署在服務器上,它給了我下面的錯誤:

C ANNOT隱式類型「字符串」轉換爲「System.DateTime的」

我試圖修改如下我的代碼:當我在服務器上部署運行後我再次工程

protected void btnInvoice_Click(object sender, EventArgs e) 
{ 
    String date = DateTime.Now.ToString(); 
    SDM_Invoice.InsertInvoice(Convert.ToDateTime(date)); 
} 

,它提供了不同的錯誤:

The best overloaded method match for 'SDM_Invoice.InsertInvoice(System.DateTime)' has some invalid arguments.

修改代碼: 現在我試圖把它保存到數據庫中使用存儲過程。
守則如下:

protected void btnInvoice_Click(object sender, EventArgs e) 
    {  
     DataTable dt = new DataTable(); 
     SqlDataAdapter SqlDataAdapter = new SqlDataAdapter(); 
     SqlConnection con = new SqlConnection(strcon); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.CommandText = "[dbo].[SDM_Insert_Invoice]"; 
     cmd.Connection = con;  

     DateTime date = DateTime.Now; 

     con.Open(); 
     cmd.Parameters.AddWithValue("@Date", DateTime.Now);    

     cmd.ExecuteReader(); 
     con.Close();   
    } 

存儲過程:

ALTER PROCEDURE [dbo].[SDM_Insert_Invoice] 
    @Date as datetime,  
    AS 
BEGIN 
    SET NOCOUNT ON; 
    INSERT INTO dbo.SDM_Tran_GenerateInvoice 
    VALUES (@Date) 
END 

現在,我得到這個錯誤:從字符串轉換日期和/或時間時 轉換失敗。

我嘗試了所有人都建議的方式,但仍然無法保存日期。請有人幫助我。

回答

0

嘗試

DateTime date = DateTime.Now; 

你必須確保該SDM_Invoice.InsertInvoice方法接受一個DateTime對象類型作爲第一個參數(這是因爲錯誤信息服務器給出明確真)

重 - 建立你的項目,再試一次。

+0

爲什麼你在字符串轉換,如果你想存儲日期時間變量的值。從DateTime.Now刪除「Tostring()」現在 – Tonny

+0

@Rami,@Tonny:謝謝你的回覆。我嘗試過'DateTime date = DateTime.Now',但是它顯示我第二個錯誤''SDM_Invoice.InsertInvoice(System.DateTime)'的最佳重載方法匹配'有一些無效參數'。我現在想念什麼? – user3196511

+0

@ user3196511你重新構建了你的項目嗎?我建議你'乾淨'(右鍵點擊 - >清理)然後重新構建它。 在將它部署到服務器之前在本地嘗試它,這將是遵循最安全和最簡單的方法 –

1

你可以通過類似下面的代碼,無需轉換...

protected void btnInvoice_Click(object sender, EventArgs e) 
{ 
    SDM_Invoice.InsertInvoice(DateTime.Now); 
} 
相關問題