sqlbulkcopy 使用DataTable作为数据源的数据类型问题。?

王尼瑪 2012-07-28 04:16:48
小弟在做批量插入sqlserver,于是便使用了sqlbulkcopy类,但是发现在插入的时候,经常报类型无法转换的问题(我确定传进去的值都对的),然后为了证实这一点,我将数据库的记录select一条记录出来,然后修改uniqueidentifier类型的主键值为Guid.NewGuid(); 然后再使用sqlbulkcopy往数据库插,竟然还会报《《来自数据源的 Int32 类型的给定值不能转换为指定目标列的类型 uniqueidentifier。》》的异常,然后我还将table的该列设置类型 modelTable.Columns["MyCategoryId"].DataType = Type.GetType("System.Guid"); 依然无效。
...全文
198 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
XBodhi. 2012-10-27
  • 打赏
  • 举报
回复
类型不对被,


数据库的和C#的要对应上,


要不你就直接 用这个

SqlParameter[] param = {

new SqlParameter("@变量",赋值的常量或变量)

}


如果你数据库类型 和C#一致就用这个。


如果不一致,只能说明你设计有问题。
wuyq11 2012-10-27
  • 打赏
  • 举报
回复
SqlParameter param2=new SqlParameter();
param2=cmnd.Parameters.Add("@Projectid",SqlDbType.UniqueIdentifier);
param2.Direction=ParameterDirection.Input;
param2.Value = System.Data.SqlTypes.SqlGuid.Parse(prjId.ToString());
chris85 2012-10-27
  • 打赏
  • 举报
回复
同样的问题,有人建议uniqueidentifier类型的字段不做映射,而设定默认值为NEWID()。

但是,如果此字段是别的表的外键,这种方式就不可以了,不知道该如何处理,希望有路过的大侠不吝赐教

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧