`
NetBus
  • 浏览: 145499 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mysql 存贮过程参数中传入汉字乱码的解决办法!

阅读更多

这个问题郁闷我了我很久。问题是这样的:

1、我使用insert语句没问题,能够正常插入汉字。

2、把insert语句移到Procedure中后,就无法插入汉字了。在客户端软件中插入的汉字总是为乱码,英文和数字没问题。

3、如果在jdbc中调用这个Procedure总是报错:

  • 在mysql 5.0下错误为:Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'v_title' at row 1,这个提示完全是错误的。
  • 在mysql 5.2下错误为:Cause: java.sql.SQLException: Incorrect string value: '\xBA\xBA\xD7\xD6\xB0\xA1' for column 'v_title' at row 1 这个提示还马马虎虎象样。

存贮过程内容如下:

  1. DELIMITER $$   
  2.   
  3. DROP PROCEDURE IF EXISTS `comments`.`test`$$   
  4.   
  5. CREATE DEFINER=`root`@`localhost` PROCEDURE `test`(   
  6. in v_title varchar(200)     
  7. )   
  8. BEGIN  
  9. insert into t1(t) values (v_title);   
  10.     END$$   
  11.   
  12. DELIMITER ;  

在查阅了很多相关资料后,发现只需要改动procedure的参数的定义就OK了,改动为:在varchar参数后面加入: character set 指定编码。由于服务器编码为gbk,我指定为:in v_title varchar(200)  character set gbk

 修改后procedure内容如下:

sql 代码
  1. DELIMITER $$   
  2.   
  3. DROP PROCEDURE IF EXISTS `comments`.`test`$$   
  4.   
  5. CREATE DEFINER=`root`@`localhost` PROCEDURE `test`(   
  6. in v_title varchar(200)  character set gbk   
  7. )   
  8. BEGIN  
  9. insert into t1(t) values (v_title);   
  10.     END$$   
  11.   
  12. DELIMITER ;  

修改后,插入汉字一切都正常啦!

BTW:我在google中搜到有很多人提出了这个问题,但是无人回答。今天我在这里也算一个解答吧。

如果没有特别注明,本Blog文章岂为原创。

转贴请注明出处:    http://netbus.iteye.com

分享到:
评论

相关推荐

    Java调用存储过程--传入集合参数

    ### Java调用存储过程——传入集合参数:深入解析与实践 #### 核心知识点概览 在Java应用中,调用数据库存储过程时,往往需要处理复杂的参数传递,特别是当参数为集合类型时,这一过程变得更加具有挑战性。本文将...

    解决jsp+MysQL输入和输出中文乱码的方法!

    解决jsp+MysQL输入和输出中文乱码的方法! 解决jsp+MysQL输入和输出中文乱码的方法!

    PHP+MySql中文乱码解决办法

    ### PHP+MySQL中文乱码解决办法详解 #### 一、乱码产生的原因 在使用PHP+MySQL进行开发的过程中,中文乱码问题是常见的一个问题。乱码现象通常发生在从数据库查询中文数据时,显示出来的中文变成了不可识别的符号...

    mysql数据存储过程参数实例详解

    MySQL 存储过程参数有三种类型:in、out、inout。它们各有什么作用和特点呢? 一、MySQL 存储过程参数(in) MySQL 存储过程 “in” 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数...

    mysql存储过程教程

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列SQL语句并封装成一个可重复使用的单元,从而提高数据处理的效率和代码的复用性。本教程将深入探讨MySQL存储过程的创建、调用以及相关概念...

    mysql存储过程实例

    inout 表示定义的参数可传入存储过程,并可以被存储过程修改后传出存储过程,存储过程默认为传入参数,所以参数 in 可以省略。第二部分为参数名。第三部分为参数的类型,该类型为 MySQL 数据库中所有可用的字段类型...

    mysql汉字乱码问题

    MySQL中的汉字乱码问题是一个常见的困扰许多开发人员和数据库管理员的问题。这主要涉及到字符编码设置不正确,导致在存储或显示汉字时出现乱码。在MySQL中,字符集是用来定义如何存储和处理字符的规则,它包括服务器...

    在DELPHI中使用MyDAC连接MySQL数据库时中文显示乱码的解决方法

    ### 在DELPHI中使用MyDAC连接MySQL数据库时中文显示乱码的解决方法 #### 背景介绍 在软件开发过程中,特别是涉及到多语言环境的应用程序开发时,字符编码问题常常成为开发者需要解决的一个重要问题。对于使用...

    mysql经典教程+mysql存储过程讲解

    在“MySQL5.0存储过程.pdf”中,你将学到如何创建、调用和管理存储过程,以及它们在实际应用中的用法。 存储过程的创建涉及定义输入参数、输出参数和局部变量。你可以编写一系列的SELECT、INSERT、UPDATE、DELETE等...

    深入mysql存储过程中表名使用参数传入的详解

    本文将深入讲解如何在MySQL存储过程中使用参数传入表名,并通过示例来说明其具体实现。 首先,我们来看存储过程的基本结构。存储过程由`BEGIN`和`END`关键词包围,中间包含了各种SQL语句。在本例中,存储过程的目的...

    MySQL存储过程的异常处理方法

    在MySQL中,存储过程是一种预编译的SQL代码集合,它可以执行复杂的操作并提供更好的性能。在编写存储过程时,异常处理是确保程序稳定性和健壮性的重要环节。本实例展示了如何在MySQL存储过程中实现异常处理,以捕获...

    Java实现调用MySQL存储过程详解

    在Java应用程序中,可以通过Java Database Connectivity (JDBC) API来调用MySQL的存储过程。 首先,确保你已经安装了MySQL数据库,并且在数据库中创建了一个或多个存储过程。例如,`findAllBook`、`pro_test`和`pro...

    mac MySQL中文乱码解决办法

    在macOS系统中,使用MySQL数据库时,可能会遇到中文乱码的问题,这通常是由于字符集设置不正确导致的。本文将详细介绍如何解决macOS系统下MySQL中文乱码的问题,通过修改配置文件my.cnf来调整MySQL的字符集,确保...

    MySQL存储过程编程.pdf

    MySQL 存储过程编程是指在 MySQL 数据库中使用存储过程来实现业务逻辑的编程技术。存储过程是一种可以在数据库中存储和执行的程序单元,它可以实现复杂的业务逻辑和数据处理操作。 在 MySQL 5.0 中,存储过程的...

    Mysql存储过程常用语句模板

    Mysql存储过程常用语句模板(含变量,if,三种循环等等) Mysql存储过程常用语句模板(含变量,if,三种循环等等) Mysql存储过程常用语句模板(含变量,if,三种循环等等) Mysql存储过程常用语句模板(含变量,if,三...

    MySQL存储过程学习

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列的SQL语句,形成一个可重复使用的代码块,以提高数据处理的效率和应用程序的性能。在这个"MySQL存储过程学习"的主题中,我们将深入探讨...

    MySQL 存储过程入门到精通

    MySQL存储过程是数据库管理系统中的一个重要特性,它允许程序员或数据库管理员预先定义一组SQL语句,形成一个可重用的逻辑单元。在这个“MySQL存储过程入门到精通”资料中,你将深入理解存储过程的原理、创建、调用...

    mysql存储过程之返回多个值的方法示例

    本文实例讲述了mysql存储过程之返回多个值的方法。分享给大家供大家参考,具体如下: mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的...

    mysql存储过程调试工具

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者编写一系列复杂的SQL语句,并作为一个单元进行执行,提高代码复用性和效率。然而,与普通的编程语言一样,存储过程的调试同样至关重要,因为错误的存储...

Global site tag (gtag.js) - Google Analytics