用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