【已解决】C#中往SQLServer插入数据时遇到BUG
错误信息如下:
“System.Data.SqlClient.SqlException”类型的未经处理的异常在 System.Data.dll 中发生
其他信息: “”附近有语法错误。
文字版代码如下:
sqlCmd.CommandText =],dataOfItem[],dataOfItem[]); sqlCmd.ExecuteNonQuery();
可以看出,出错的地方就是那一句SQL语句。
既然是SQL语句的问题为何不贴进SQL里去调试一番呢?
于是和我便从从程序出错时提取出出错的那句SQL语句。
Ctrl+c、Ctrl+V,我将它原原本本的复制到了SQL Server Management Studio里。
F5运行。
经过一番修改,确认是括号问题,重新输入一遍括号后,数据成功入库。
看起来现在只是括号的半角和全角问题,可惜我错了。
Ctrl+c、Ctrl+V,我将修改后的符号原原本本的复制到了Microsoft Visual Studio里。
继续报错。
随后我又经行了如下尝试,均无果。
1、将String.Format()方法更换成String的加号运算符重载。
2、将从Visual Studio 2012更换成2015。
3、将.Net 框架从4.6.1更换为4.5。
4、重启SQL Server 实例。
5、重启计算机。
6、把NAME字段的类型设置为nvarchar 。(感谢刘宏玺的建议)
7、在SQL语句下添加;(感谢贫民窟大侠的建议)
8、使用String.Trim()方法。
9、使用Object.Replace()替换括号。
唯一成功过的一次是我把SQL语句手动打一遍,像这样:
sqlCmd.CommandText ="insert into [dbo].[Table4Test]([ID],[Name],[Password])values(0,'吴静钰','1')"; sqlCmd.ExecuteNonQuery();
问题看似出在了字符串合并上。
根据runliuv的建议,我用File.AppendAllText()方法导出了SQL 语句的文本,并将notepad++软件设为显示所有符号。
把NotePad++用ANCI编码将文件重新打开,看到了异常。
对比前面的那张图看到,第一个values后面的字符“1”乱码了。
于是,我把该字符在UTF8编码格式重新打开并复制到了一个新的TXT文件当中,用十六进制查看器对其与ANCI和UTF8无ROM编码进行对比。
(UTF8编码格式)
(UTF8无ROM编码、ACNI编码)
解决方法:
用Notepad++软件将数据源的UTF8编码格式转化为UTF8无ROM。
感谢runliuv
(他所提供的方法是正确的,打开显示所有字符是最有效的方法,但是我在执行上出了问题。)
总结:
“人们总是看到自己所愿意看到的东西”
在遇到解决不了BUG的时候,不妨从头想想,看看自己所忽略掉的细节。因为人们常常会忽略掉一些显而易见的细节,不断自我欺骗,让事情的走向看似向着我们所笃行的方向前进。
修补漏洞如此,为人处事亦是如此。
【已解决】C#中往SQLServer插入数据时遇到BUG的更多相关文章
- Mysql中Innodb大量插入数据时SQL语句的优化
innodb优化后,29小时入库1300万条数据 参考:http://blog.51yip.com/mysql/1369.html 对于Myisam类型的表,可以通过以下方式快速的导入大量的数据: A ...
- sqlserver 插入数据时异常,仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'XXXXX.dbo.XXXXXXXXX'中的标识列指定显式值。
INSERT INTO XXXXXXXXX.dbo.XXXXXXXXX select * from XXXXXXXXX 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'X ...
- 解决java在对MySQL插入数据时出现乱码问题
1.在连接数据库的时候请注意, 最使用连接连接数据库的时候,必须在后面追加上编码的设置:useUnicode=true&characterEncoding=UTF-8,如下图所示. 参考连接: ...
- AGS中通过FeatureServer插入数据失败、插入数据在WMTS请求中无法显示以及version概念的讨论
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 在多个项目中,当我方接口给其他部门人员使用时出现了插入数据失 ...
- (转)MySQL 插入数据时,中文乱码问题的解决
MySQL 插入数据时,中文乱码问题的解决 原文:http://www.cnblogs.com/sunzn/archive/2013/03/14/2960248.html 当向 MySQL 数据库插 ...
- 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案
1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...
- QStandardItemModel的data线程安全(在插入数据时,临时禁止sizeHint去读model中的data)
版权声明:本文为博主原创文章,欢迎转载,转载请注明出处 https://blog.csdn.net/MatchYang/article/details/52988257 在直接使用QStandardI ...
- 在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据)
原文:在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决 ...
- 触发器修改后保存之前的数据 表中插入数据时ID自动增长
create or replace trigger t before update on test5 for each rowbegin insert into test55 values (:old ...
随机推荐
- 9.8、Libgdx的返回键和菜单键捕获
(官网:www.libgdx.cn) 当用户在Android设备中点击返回键是,通常关闭当前运行的activity.游戏可能会给出一个确认对话框让用户选择退出或继续.要这样的话需要捕获返回键: Gdx ...
- How to Enable Trace or Debug for APIs executed as SQL Script Outside of the Applications ?
In this Document Goal Solution 1: How do you enable trace for an API when executed from a SQL ...
- 【Unity Shaders】Diffuse Shading——创建一个自定义的diffuse lighting model(漫反射光照模型)
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十)
下面修改最为关键的matchRun方法里的代码: CCActionCallBlock *blk = [CCActionCallBlock actionWithBlock:^{ _finishedCou ...
- Android BLE与终端通信(五)——Google API BLE4.0低功耗蓝牙文档解读之案例初探
Android BLE与终端通信(五)--Google API BLE4.0低功耗蓝牙文档解读之案例初探 算下来很久没有写BLE的博文了,上家的技术都快忘记了,所以赶紧读了一遍Google的API顺便 ...
- 【Qt编程】Qt学习笔记<三>
1. 如果程序中使用了png以外格式的图片,在发布程序时就要将Qt安装目录下plugins中的imagineformats文件复制到发布文件中. 2. 在函数声明处快速添加函数定义 ...
- Matlab R2013a: C++ MEX on Ubuntu 14.04 64-bit
原文地址: http://blogs.bu.edu/mhirsch/2013/07/matlab-r2013a-mex-on-ubuntu-13-04-64-bit/ Note: the way Me ...
- Rest api简介
理解和使用内容协商 我们的开发者在发送一个 REST API 请求的同时,根据应用场景,针对相同的资源,可能会期待不同的返回形式. 比如,我希望根据用户客户端语言,同一个资源的内容可以返回不同的语言. ...
- RHEL6 安装KVM
RHEL6 安装KVM # egrep '^flags.*(vmx|svm)' /proc/cpuinfo 有显示说明CPU支持VT功能 2.在主板BIOS中开启CPU的Virtual Technol ...
- Linux常用命令(第二版) --文件管理命令
文件管理命令 并不建议:照着像命令大全这类的书来学! 常用命令大约有200个. 文件命名规则: a)除了'/'之外所有字符都合法! b)这些字符最好不用 1.空格符,制表符,退格符 2.连接符 3.特 ...