我的数据库中有一个DateTime
以 a 作为参数的存储过程。就我而言,如果我向查询发送一个datetime
对象,框架就会发挥作用(哈哈)。
但是,当我运行查询时,出现异常并显示以下错误消息:
将数据类型 nvarchar 转换为日期时间时出错。
我做了一个通用的方法来与数据库通信,我只告诉他存储过程名称和参数。
datetime
我从 C# 发送的内容是从配置文件中读取并转换的。
有任何想法吗?
编辑
我将 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());