我在數據庫表中有一個「日期」列,其數據類型是「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
現在,我得到這個錯誤:從字符串轉換日期和/或時間時 轉換失敗。
我嘗試了所有人都建議的方式,但仍然無法保存日期。請有人幫助我。
爲什麼你在字符串轉換,如果你想存儲日期時間變量的值。從DateTime.Now刪除「Tostring()」現在 – Tonny
@Rami,@Tonny:謝謝你的回覆。我嘗試過'DateTime date = DateTime.Now',但是它顯示我第二個錯誤''SDM_Invoice.InsertInvoice(System.DateTime)'的最佳重載方法匹配'有一些無效參數'。我現在想念什麼? – user3196511
@ user3196511你重新構建了你的項目嗎?我建議你'乾淨'(右鍵點擊 - >清理)然後重新構建它。 在將它部署到服務器之前在本地嘗試它,這將是遵循最安全和最簡單的方法 –