【发布时间】:2013-11-15 21:03:14
【问题描述】:
我正在使用 ErikEJ 的 SqlCeBulkCopy 类,当我插入目标为 smallint 类型的列时,会引发异常。我正在使用的 IDataReader 实现将每个值都保存为字符串。读取第一个 smallint 列的值后出现异常,抛出 InvalidCastException 并带有以下堆栈跟踪:
在 System.Data.SqlServerCe.SqlCeUpdatableRecord.SetClrTypeValue(Int32 序数,对象值,字符串方法)在 System.Data.SqlServerCe.SqlCeUpdatableRecord.SetValue(Int32 序数, 对象值)在 ErikEJ.SqlCe.SqlCeBulkCopy.WriteToServer(ISqlCeBulkCopyInsertAdapter 适配器)在 ErikEJ.SqlCe.SqlCeBulkCopy.WriteToServer(IDataReader 读者)在 MyApplication.Modules.Analysis.SqlCeFileConfiguration.SqlCeBulkDataStreamer.CopyFromReader(IDataReader 阅读器,字符串destinationConnectionString,字符串表名)在 E:\代码\桌面 MyApplication\software\desktop_and_web\MyApplication\MyApplication.Analysis\SqlCeFileConfiguration\SqlCeBulkDataStreamer.cs:line 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:line 第742章
在我的过程中第一次发生这种情况时,值为“8”。在处理其他表时也会发生这种情况,总是在 smallint 并且总是在转换完全有效的字符串时。
谁能建议为什么会发生这种情况以及我该如何解决?我的 IDataReader 实现是否应该在返回每种类型之前对其进行转换?
谢谢,
【问题讨论】:
标签: c# sql-server-ce