用SqlBulkCopy批量安插数据时提示来自数据源的 String 类型的给定值不能转换为指定目标列的类型 int


                dr["description"] = ds.Tables[0].Rows[i]["组织描述"].ToString();
                dr["groupuser"] = ds.Tables[0].Rows[i]["组织成员"].ToString();
                dr["userid"] = AMSession.LoginUser.id;
                dr["remark"] = ds.Tables[0].Rows[i]["备注信息"].ToString();
                dt.Rows.Add(dr);
            }

            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();
            SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(AMCommon.DBUtility.DbHelperSQL.connectionString);
            sqlBulkCopy.DestinationTableName = "groupinfo";
            sqlBulkCopy.BatchSize = dt.Rows.Count;

            SqlConnection sqlConnection = new SqlConnection(AMCommon.DBUtility.DbHelperSQL.connectionString);
            sqlConnection.Open();
            if (dt != null && dt.Rows.Count != 0)
            {
                sqlBulkCopy.WriteToServer(dt);
            }
            sqlBulkCopy.Close();
            sqlConnection.Close();
            stopwatch.Stop();

 


------解决方案--------------------
SqlBulkCopy不是根据表的ColumnName来匹配的,而是根据ColumnIndex匹配,
也就是说你的表 字段必须跟数据库的表字段完全一致(Index的排序要跟数据表的一样)。
就算你该字段不打算给他插入值,也要建个DataColumn。包括自增ID.不需要给他值就好了


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM