【已解决】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 ...
随机推荐
- javascript之BOM编程Screen(屏幕)对象
这个对象属性相对比较简单.掌握四个方法即可. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...
- mxGraph进阶(一)mxGraph教程-开发入门指南
mxGraph教程-开发入门指南 概述 mxGraph是一个JS绘图组件适用于需要在网页中设计/编辑Workflow/BPM流程图.图表.网络图和普通图形的Web应用程序.mxgraph下载包中包括用 ...
- 解决bootstrap row span设置border换行的问题
Hadoop方面的毕业设计告一段落了,趁这几天空闲时间认真学习一下之前常使用但是却没用好的Bootstrap. 本文记录Bootstrap框架使用栅格系统时,遇到row内的span设置border换行 ...
- URLClassLoader
package com.reflect.load; import java.net.URL; import java.net.URLClassLoader; import java.sql.Conne ...
- 新书《Ext JS 4.2实战》即将出版
目录: 第1章 Ext JS 4概述1.1 从Ext JS 4.0到4.071.2 从4.1到4.1.1a1.3 从4.2到4.2.11.4 如何选择版本1.5 基 ...
- 添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三)
添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三) 猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blo ...
- OpenCV 金字塔图像缩放
// image_pyramid.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <string> #incl ...
- Android开发技巧——使用Dialog实现仿QQ的ActionSheet菜单
最近看到有人用Dialog来实现QQ的仿ActionSheet的自定义菜单,对于自己没实现过的一些控件,看着也想实现一下.于是动手了一下,发现也不难,和大家分享一下. 本文原创,转载请注明出处:htt ...
- 如何让minicom换行
以前在使用minicom验证裸板代码的时候,经常会遇到以下这个问题: 通常一直打数据往后打就只能打一行,然后就不能换行了,遇到这个问题如何解决? 看到屏幕下方提示:CTRL-A Z for hel ...
- C++语言之静态变量的运用
#include <iostream> using namespace std ; class Banana { public: static int id ; Banana(void) ...