MYSQL使用存储过程插入中文数据的疑似bug(UTF8)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
数据库Connection和字段的字符集都采用utf-8.
开始使用存储过程插入数据,代码大约如下
               MySqlCommand cmd = new MySqlCommand("apend_testproject",
                   new MySqlConnection(cConnectMySqlHelp.GetConnectStr().ConnectionString));
                commonfunc.logfile(cmd.Connection.ConnectionString);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new MySqlParameter("_PM", _PM));
                cmd.Parameters.Add(new MySqlParameter("_PUBLISH_TIME", _PUBLISH_TIME));
                cmd.Parameters.Add(new MySqlParameter("_PRODUCT_LINE", _PRODUCT_LINE));
                cmd.Parameters.Add(new MySqlParameter("_NAME", HttpUtility.UrlDecode(_NAME)));
                cmd.Parameters.Add(new MySqlParameter("_PROGRESS", 100));
                cmd.Parameters.Add(new MySqlParameter("_TEST_SUB_TIME", _TEST_SUB_TIME));
                cmd.Parameters.Add(new MySqlParameter("_PROJECT_TYPE", _PROJECT_TYPE));
结果数据库表中显示乱码,很郁闷,以为是字符集编码的问题,去网上找了些资料说可以如下操作,意思是
在connectstring里边加入字符集说明utf-8
         public static MySqlConnectionStringBuilder GetConnectStr()
        {
            MySqlConnectionStringBuilder connBuilder =
            new MySqlConnectionStringBuilder();
            connBuilder.Add("Database", "testplat");
            connBuilder.Add("Data Source", "10.2.226.20");
            connBuilder.Add("User Id", "root");
            connBuilder.Add("Password", "");
            //connBuilder.Add("charset", "utf8");
            return connBuilder;
        }
结果还是错误。实在没有办法,根据测试直觉,是不是由于存储过程是在数据库端,所以,,,,那么直接写Sql调用试试,
代码如下
  MySqlCommand cmd = new MySqlCommand();
                cmd.CommandType = CommandType.Text;
                cmd.Connection = new MySqlConnection(cConnectMySqlHelp.GetConnectStr().ConnectionString);
                cmd.CommandText = "insert `testplat`.`TESTPROJECT` (PM,PUBLISH_TIME,PRODUCT_LINE,NAME,PROGRESS,TEST_SUB_TIME,PROJECT_TYPE) "+
                                "values('" + _PM + "','" + _PUBLISH_TIME + "','" + _PRODUCT_LINE + "','" + _NAME + "'," + 100 + ",'" + _TEST_SUB_TIME + "'," + _PROJECT_TYPE + ")";
中文不再显示乱码,于是可以断言是存储过程的问题。为了验证,直接到Mysql客户端工具中
执行存储过程:
CALL apend_testproject('elbert', '2009-11-30', 0, '木牛流马',2, '2009-10-30', 2);
报:
Incorrect string value: '\xE6\x9C\xA8\xE7\x89\x9B...' for column '_NAME' at row 1                
至此可以断言MySql有b ug;虽然经过验证,但是毕竟不是mysql方面专家,所以标题加上疑似!
附mysql版本 
mysql  Ver 14.12 Distrib 5.0.81, for pc-linux-gnu (i686) using readline 5.1


本文转自elbertchen 51CTO博客,原文链接:http://blog.51cto.com/linkyou/283252,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
缓存 NoSQL 关系型数据库
13- Redis和Mysql如何保证数据⼀致?
该内容讨论了保证Redis和MySQL数据一致性的几种策略。首先提到的两种方法存在不一致风险:先更新MySQL再更新Redis,或先删Redis再更新MySQL。第三种方案是通过MQ异步同步以达到最终一致性,适用于一致性要求较高的场景。项目中根据不同业务需求选择不同方案,如对一致性要求不高的情况不做处理,时效性数据设置过期时间,高一致性需求则使用MQ确保同步,最严格的情况可能涉及分布式事务(如Seata的TCC模式)。
35 6
|
16天前
|
存储 SQL 关系型数据库
轻松入门MySQL:加速进销存!利用MySQL存储过程轻松优化每日销售统计(15)
轻松入门MySQL:加速进销存!利用MySQL存储过程轻松优化每日销售统计(15)
|
16天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
|
23天前
|
关系型数据库 MySQL
elasticsearch对比mysql以及使用工具同步mysql数据全量增量
elasticsearch对比mysql以及使用工具同步mysql数据全量增量
20 0
|
25天前
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
20 1
|
25天前
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
24 1
|
1月前
|
SQL 关系型数据库 MySQL
MySQL怎样删除重复数据,只保留一条?
MySQL怎样删除重复数据,只保留一条?
|
25天前
Mybatis+mysql动态分页查询数据案例——条件类(HouseCondition)
Mybatis+mysql动态分页查询数据案例——条件类(HouseCondition)
15 1
|
25天前
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
20 1
|
25天前
Mybatis+mysql动态分页查询数据案例——房屋信息的实现类(HouseDaoMybatisImpl)
Mybatis+mysql动态分页查询数据案例——房屋信息的实现类(HouseDaoMybatisImpl)
21 2