我的數據庫中有一個存儲過程,其中DateTime
作爲參數。就我而言,如果我發送一個datetime
對象,框架會做魔術(lol)。將日期時間發送到C#中的SQL查詢
然而,當我運行查詢我出現以下錯誤消息的異常:
錯誤的數據類型爲nvarchar轉換爲datetime。
我做了一個通用的方法與數據庫中,我只告訴他的存儲過程的名稱和參數進行通信。我從C#發送的datetime
是從配置文件中讀取並轉換的。
任何想法?
編輯
我使用C#與.NET Framework和使用SQL Server 2008數據庫。
我從配置文件中的日期是這樣的:
DateTime fechaSistema = Convert.ToDateTime(ConfigurationSettings.AppSettings["fechaSistema"]);
在配置文件:
<appSettings>
<add key ="fechaSistema" value = "2013-05-28"/>
</appSettings>
執行的程序代碼如下所示:
private static DataTable _retrieveDataTable(string procedure, List<string> args, params object[] values)
{
SqlConnection cn = new SqlConnection();
SqlCommand cm = new SqlCommand();
SqlDataReader dr;
DataTable dt = new DataTable();
try
{
conexionSql(cn, cm);
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "HARDCODERS."+procedure;
_loadSqlCommand(args, values, cm);
dr = cm.ExecuteReader();
dt.Load(dr);
return dt;
}
catch (Exception ex)
{
return null;
}
finally
{
if (cn != null)
{
cn.Close();
}
}
}
private static void _loadSqlCommand(List<string> args, object[] values, SqlCommand cm)
{
for (int i = 0; i < args.Count; i++)
{
cm.Parameters.AddWithValue(args[i], values[i].ToString());
}
}
而這種調用方法的確如此:
SqlConnector.retrieveDataTable("getTop5ClientesConMasPuntosAcumulados", Globals.getFechaSistema());
c#代碼將是相關的。 –
***什麼***數據庫(及其版本)? –
我打算出去,並且猜測你正在嘗試爲參數傳遞nvarchar。 – LittleBobbyTables