.Net MySql 编码中英文单引号组合异常分析

 时间:2024-10-31 07:36:56

1、跟踪参数化最终执行的真实sql语句方法,连接串里面增加Logging=true

.Net MySql 编码中英文单引号组合异常分析

2、编写业务参数化代码

.Net MySql 编码中英文单引号组合异常分析

3、mysql底层驱动源码,参数化最终会重新组装成sql语句,根据log可以拿到真实sql:下图红色方框中就是真实的sql语句,copy到sqlyog执行器里面执行,gbk或utf8下都不会报错,但程序--db中间会报错(仅限gbk编码的数据库)

.Net MySql 编码中英文单引号组合异常分析

4、sql语句如下:update gowner set goname='acbc\‘父控件\'',gosex=0,爿讥旌护goadmin=0,goidno='de',gomobile='',goemail='',goaddress='23',gorate=0,gomodifydtime='2017-06-01 09:17:40',goremark='迎宾道康乐小区气象局家属楼5栋b号底店车炎汽车会\‘的',level=0 where goid=228从sql中可以看出,中文和英文单引号都被增加了转义字符;

5、对应功能的mysql驱动源码如下:

.Net MySql 编码中英文单引号组合异常分析

6、最终解决办法:一、连接串和set names要统一编码;要么都用gbk,要么都用gb2312二、或者是修改底层驱动的源码,单引号改为双引号包裹字符串DbHelper.ConnectionCharset=gb2312最终会转换为命令setnamesgb2312;

.Net MySql 编码中英文单引号组合异常分析.Net MySql 编码中英文单引号组合异常分析
  • Eclipse下AndroidAnnotations配置指南
  • SqlDbx怎么设置启用DBMS_OUTPUT输出
  • 如何使用python语言中的json模块中方法存储数据
  • 怎么用简单的多线程模拟火车售票?
  • C#.NET怎样定义一个类?
  • 热门搜索
    车前草怎么吃 华为隐私空间怎么用 绿豆汤怎么煮 姜汤怎么做 网上怎么预约挂号 怎么才能怀孕 马兰头怎么做好吃 雅漾的护肤品怎么样 淡盐水怎么做 疫情手抄报内容怎么写