热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么老是提示SqlBulkCopy来自数据源的String类型的给定值不能转换为指定目标列的类型int

privatevoidTransferData(stringexcelFile,stringsheetName,stringconnectionString)
  private  void TransferData(string excelFile, string sheetName, string connectionString) 
        { 
            DataSet ds = new DataSet(); 
            try 
            { 
                //获取全部数据 
                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0;"; 
                OleDbConnection conn = new OleDbConnection(strConn); 
                conn.Open(); 
                string strExcel = ""; 
                OleDbDataAdapter myCommand = null; 
                strExcel = string.Format("select * from [{0}$]", sheetName); 
                myCommand = new OleDbDataAdapter(strExcel, strConn); 
                myCommand.Fill(ds, sheetName); 

                //用bcp导入数据 
                using (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connectionString)) 
                { 
                    bcp.SqlRowsCopied += new System.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied); 
                    bcp.BatchSize = 1;//每次传输的行数 
                    bcp.NotifyAfter = 1;//进度提示的行数 
                    bcp.DestinationTableName = "Staff_Msg";//目标表 
                    bcp.WriteToServer(ds.Tables[0]); 
                }
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            } 

            } 

            //进度显示 
            void bcp_SqlRowsCopied(object sender, System.Data.SqlClient.SqlRowsCopiedEventArgs e) 
            { 
                this.Text = e.RowsCopied.ToString(); 
                this.Update(); 
            } 

 private void btnInput_Click(object sender, EventArgs e)
        {
            string p = IniReadValue("StandIni", "ExportStaffForPath", configPath);
            TransferData(p,"Sheet1",sql); 
        }

数据库中只有1列【年龄】是int类型,还有两个是bit类型。Excel里的年龄数据我用过了数值类型,也加过了'.还是提示这个错误,请各位大侠帮我看看是什么原因?小弟初来CSDN,分数不多,请帮帮忙!

10 个解决方案

#1


是不是字段对应出位了,楼主仔细检查一下

#2


意思,楼主自己也明白,这个是没对应上或者有转换不了的,比如空格什么的,多仔细看看吧

#3


数据源有问题,你还是直接读取EXCEL内容,然后自己写SQL语句插入数据吧,这样可以纠正EXCEL中不正确的数据

#4


数据库里有些值为空或NULL
单元格数据是否存在问题

#5


我在网上下载了个例子运行没有问题,但是把代码移到我的里面就不行,还是报告这个错误。郁闷死了!Excel里的数据也改过了还是不行!真搞不懂问题出在哪里?

#6


我测试发现如果数据库中的类型是int,那么在Excel对应的字段中值前加个 ' 转成string就可以。但是数据库中是bit类型的,在Excel里应该用什么类型呢?文本、数值都试过了不行!请指教!

#7


有能解决这个问题的吗?这个坎一直迈不过去了!

#8


碰到同样的问题,急死了,测试了很久都不清楚问题出在哪里。我把DataTable数据集里的数据添加到数据库中,字段都完全相同哇,如果DataTable中的int类型的数据值为空,我就循环设置为DBNull.Value了,可是还是报同样的错,真的不清楚问题出在哪里了。。。。

#9


终于知道什么原因了哦 - -!!!
根据
引用 1 楼 guyehanxinlei 的回复:
是不是字段对应出位了,楼主仔细检查一下

的话,原来我DataTable里的字段和数据库里的字段位置不是完全一一对应的哦(我也完全没有想到必须要位置一一对应,以为只要 列名 完全相同就好)
哎,走了很多弯路,不过解决了就好,嘿嘿~

#10


我的字段位置对应都对,不能导入的原因是:datatable中的数据有一些后面有空格,导致长度可能超过数据库中定义长度。如何去掉这些空格呢?

推荐阅读
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
  • 使用cpphttplib构建HTTP服务器以处理带有查询参数的URL请求 ... [详细]
  • 本文探讨了如何在C#中实现USB条形码扫描仪的数据读取,并自动过滤掉键盘输入,即使不知道设备的供应商ID(VID)和产品ID(PID)。通过详细的技术指导和代码示例,展示了如何高效地处理条形码数据,确保系统能够准确识别并忽略来自键盘的干扰信号。该方法适用于多种USB条形码扫描仪,无需额外配置设备信息。 ... [详细]
  • 本文探讨了在Android应用中实现动态滚动文本显示控件的优化方法。通过详细分析焦点管理机制,特别是通过设置返回值为`true`来确保焦点不会被其他控件抢占,从而提升滚动文本的流畅性和用户体验。具体实现中,对`MarqueeText.java`进行了代码层面的优化,增强了控件的稳定性和兼容性。 ... [详细]
  • SharePoint 2010多语言用户界面的开发要点与注意事项
    SharePoint 2010 提供了强大的多语言用户界面支持,使得同一网站能够以多种语言展示。例如,对于一个中文版本的 SharePoint 2010 系统,管理员可以通过在服务器上安装英文语言包来实现多语言界面。这一功能不仅提升了用户体验,还扩展了系统的国际化能力。然而,在实施过程中需要注意一些关键点,如确保所有资源文件正确配置、进行充分的测试以及合理管理语言包的更新。这些步骤有助于确保多语言功能的稳定性和可靠性。 ... [详细]
  • 进程(Process)是指计算机中程序对特定数据集的一次运行活动,是系统资源分配与调度的核心单元,构成了操作系统架构的基础。在早期以进程为中心的计算机体系结构中,进程被视为程序的执行实例,其状态和控制信息通过任务描述符(task_struct)进行管理和维护。本文将深入探讨进程的概念及其关键数据结构task_struct,解析其在操作系统中的作用和实现机制。 ... [详细]
  • Go语言实现Redis客户端与服务器的交互机制深入解析
    在前文对Godis v1.0版本的基础功能进行了详细介绍后,本文将重点探讨如何实现客户端与服务器之间的交互机制。通过具体代码实现,使客户端与服务器能够顺利通信,赋予项目实际运行的能力。本文将详细解析Go语言在实现这一过程中的关键技术和实现细节,帮助读者深入了解Redis客户端与服务器的交互原理。 ... [详细]
  • 本文深入探讨了 HTML 中的 `margin` 属性,详细解析了其基本特性和应用场景。文章不仅介绍了 `margin` 的基本概念,还重点讨论了垂直外边距合并现象,并分析了 `margin` 在块级元素与内联元素中的不同表现。通过实例和代码示例,帮助读者全面理解 `margin` 的使用技巧和常见问题。 ... [详细]
  • POJ 1696: 空间蚂蚁算法优化与分析
    针对 POJ 1696 的空间蚂蚁算法进行了深入的优化与分析。本研究通过改进算法的时间复杂度和空间复杂度,显著提升了算法的效率。实验结果表明,优化后的算法在处理大规模数据时表现优异,能够有效减少计算时间和内存消耗。此外,我们还对算法的收敛性和稳定性进行了详细探讨,为实际应用提供了可靠的理论支持。 ... [详细]
  • 探索JavaScript倒计时功能的三种高效实现方法及代码示例 ... [详细]
  • 深入解析 UIImageView 与 UIImage 的关键细节与应用技巧
    本文深入探讨了 UIImageView 和 UIImage 的核心特性及应用技巧。首先,详细介绍了如何在 UIImageView 中实现动画效果,包括创建和配置 UIImageView 实例的具体步骤。此外,还探讨了 UIImage 的加载方式及其对性能的影响,提供了优化图像显示和内存管理的有效方法。通过实例代码和实际应用场景,帮助开发者更好地理解和掌握这两个重要类的使用技巧。 ... [详细]
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • 使用 MyEclipse 和 TestNG 测试框架在 Java 中高效进行单元测试
    通过MyEclipse集成TestNG测试框架,可以在Java开发中高效地进行单元测试。本文介绍了在JDK 1.8.0_121和MyEclipse 10.0离线环境下配置和使用TestNG的具体步骤,帮助开发者提高测试效率和代码质量。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • Java 零基础入门:SQL Server 学习笔记(第21篇)
    Java 零基础入门:SQL Server 学习笔记(第21篇) ... [详细]
author-avatar
Yomon-00
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有