我正在使用ErikEJ的SqlCeBulkCopy类,当我插入目标类型为smallint的列时,会抛出异常。我正在使用的IDataReader实现将每个值都保存为字符串。读取第一个smallint列的值后出现异常,抛出InvalidCastException并显示以下堆栈跟踪:
at System.Data.SqlServerCe.SqlCeUpdatableRecord.SetClrTypeValue(Int32 ordinal,Object value,String method)at System.Data.SqlServerCe.SqlCeUpdatableRecord.SetValue(Int32 ordinal, 对象值) ErikEJ.SqlCe.SqlCeBulkCopy.WriteToServer(ISqlCeBulkCopyInsertAdapter 适配器)在ErikEJ.SqlCe.SqlCeBulkCopy.WriteToServer(IDataReader) 读者) MyApplication.Modules.Analysis.SqlCeFileConfiguration.SqlCeBulkDataStreamer.CopyFromReader(IDataReader的 reader,String destinationConnectionString,String tableName)in E:\代码\桌面 所有MyApplication \ SOFTWARE \ desktop_and_web \ MyApplication的\ MyApplication.Analysis \ SqlCeFileConfiguration \ SqlCeBulkDataStreamer.cs:行 44点 MyApplication.Modules.Analysis.Services.SqlCeDataManagerService.InsertData(字符串 connectionString,String tempWorkFolder,TableInfo tableInfo)in E:\代码\桌面 所有MyApplication \ SOFTWARE \ desktop_and_web \ MyApplication的\ MyApplication.Analysis \ SERVICES \ SqlCeDataManagerService.cs:行 742
在我的过程中第一次发生这种情况,值为“8”。它也会在处理其他表时出现,总是在smallint处,并且总是在转换完全有效的字符串时。
任何人都可以建议为什么会发生这种情况以及如何解决这个问题?我的IDataReader实现应该在返回之前转换每种类型吗?
谢谢,
答案 0 :(得分:0)
我认为您需要将smallint作为smallint存储在IDataReader中!但随意上传一个示例项目,我会看看。你能不能简单地使用IEnumerable,WriteToServer也支持吗?