C#中往SQLServer插入数据时遇到BUG
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中往SQLServer插入数据时遇到BUG相关的知识,希望对你有一定的参考价值。
错误信息如下:
“System.Data.SqlClient.SqlException”类型的未经处理的异常在 System.Data.dll 中发生
其他信息: “”附近有语法错误。
文字版代码如下:
1 sqlCmd.CommandText =string.Format( "insert into [dbo].[Table4Test]([ID],[Name],[Password])values({0},‘{1}‘,‘{2}‘)", dataOfItem[0],dataOfItem[1],dataOfItem[2]);
2
3 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、重启计算机。
唯一成功过的一次是我把SQL语句手动打一遍,像这样:
1 sqlCmd.CommandText ="insert into [dbo].[Table4Test]([ID],[Name],[Password])values(0,‘吴静钰‘,‘1‘)"; 2 3 sqlCmd.ExecuteNonQuery();
问题看似出在了字符串合并上。
根据runliuv的建议,我用File.AppendAllText()方法导出了SQL 语句的文本,并将notepad++软件设为显示所有符号。
看不出异常。
最后把环境贴一下:
系统:Windows 10 专业版 1511。
IDE:Microsoft Visual Studio 2012/2015。
.Net 框架:.Net Framework4.5/4.6.1
SQL Server : Microsoft SQL Sever 2012。
对了,还有相同案例。
http://bbs.csdn.net/topics/390687746
以上是关于C#中往SQLServer插入数据时遇到BUG的主要内容,如果未能解决你的问题,请参考以下文章
使用C#书写SQLite数据库增删改查语句(以及插入byte[]时遇到的问题总结)