mysql使用存储过程插入数据后,参数为中文的为?或乱码

最近了解了一下mysql存储过程,之前版本的mysql不支持存储过程,5.0版本后就可以支持存储过程的使用;恰好笔者下载使用版本为5.6.20:

做了一个给表插入数据的简单存储过程,发现打开表后汉字全部显示为?号。如下:

于是上网查资料,忙了两小时才搞定!好了,现在简单叙述一下。

笔者遇见的问题是由两种原因引起的;

第一:使用Navicat数据库客户端建立表设置问题导致的,如下:

将上边操作完成后,可以在表里插入汉字,没有?号或者乱码现象了,本以为问题解决了,但使用存储过程时依然插入的是?号;然后笔者就认为是存储过程出问题啦,果然,经查阅资料发现,mysql存储过程插入参数涉及中文的要将varchar类型修改为nvarchar,代码如下:

好了,打完收工!结果如下:

以上方法是笔者找到的两种问题,并将之处理的方案,如读者有其他更好的解决方案,也可以提出来,相互进步;当然类似的问题可能由于其他原因导致,在这里就不过多叙述了!

时间: 2025-01-11 05:06:07

mysql使用存储过程插入数据后,参数为中文的为?或乱码的相关文章

mysql 插入数据后返回当前的自增ID方法

存储过程的写法: mysql>create procedure test( ->in username varchar(50), ->in password varchar(50), ->out userid int) ->begin ->set @sql=concat("insert into user(`username`,`password`) values(' ",username,"' ,' ",password,&qu

mysql插入数据后返回自增ID的方法

mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得到这个自增id的值呢? 方法一:是使用last_insert_id mysql> SELECT LAST_INSERT_ID(); 产生的ID 每次连接后保存在服务器中.这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_INCREMENT列的最新语句第一个 AUTO_INCREMEN

Mybatis 插入数据后返回主键值

Oracle中获取刚刚插入记录的主键值: <insert id="insertSelective" parameterType="com.jxxx.p2pp.model.UUserInfo">     <selectKey resultType="java.math.BigDecimal" order="BEFORE" keyProperty="id">    SELECT U_US

mybatis框架(6)---mybatis插入数据后获取自增主键

mybatis插入数据后获取自增主键 首先理解这就话的意思:就是在往数据库表中插入一条数据的同时,返回该条数据在数据库表中的自增主键值. 有什么用呢,举个例子: 你编辑一条新闻,同时需要给该新闻打上标签(可以一个或者多个:比如:女性,爱,钱等等),然后存储到数据库中.怎么存,肯定涉及到三张表,新闻表,标签表,新闻标签id关联表 新闻表插入数据简单,标签表插入数据简单.那新闻标签表呢,如何关联,那是不是需要新闻表和标签表插入数据的时候,返回它们的主键Id然后再存储到新闻标签表中. 这种场景还是蛮常

window.location.herf=url参数有中文,到后台乱码问题解决

js中的代码: /*将中文的参数进行两次编码 */ function queryByName(){                    //获取查询条件的用户名                    var queryName=$("#queryName").val();//尚晓飞当当                    alert(queryName);                    //进行后台跳转                    window.location.

mysql:insert插入数据过慢如何解决,设置innodb_flush_log_at_trx_commit为0就能解决

问题: 最近在做性能测试,造数据,发现insert好慢,只有几十条每秒,很奇怪,最后再网上找到了原因. 网文如下: MY SQL insert 速度过慢 最近在用MySQL做存储,测试中发现插入数据太慢了,插入速度只有20-30 条/秒,后来查资料后,将MySQL的1个参数:innodb_flush_log_at_trx_commit,1改为了0(修改方法,可以直接修改my.ini(windows)/my.cnf(linux)中的对应参数,似乎用命令直接设置没有效果),插入速度就提升到了3000

mysql中循环插入数据--造测试数据

背景描述 测试需求:如上图,筛选按预约数排序靠前的机构,排名第51及之后的机构不显示. 验证功能前,测试数据中至少有50个不同预约数, 实现方式: 1.或手工往数据库表中插入  ,50个机构下分别添加不同的预约数,要边添加.边记录预约数. 2.按某种规律生成数据,往数据库表中插入. 3.用sql语句循环写数据,(提前是找到规律) ------------------------------------------------------------------------------------

Laravel 5 插入数据后返回主键ID

方法一: $info = DB::table('表名')->insertGetId(['imgName' => $fileName]);//图片名入库后返回添加数据行的主键ID 方法二:(适用于Mysql数据库) 执行原生SQL,然后返回新添加的主键ID值 语法:INSERT INTO 表名(字段1, 字段2, 字段3) VALUES (值1, 值2, 值3);SELECT @@IDENTITY AS returnName; #返回刚插入的数据的主键ID并起别名为 "returnNa

向mysql中批量插入数据的性能分析

MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下   CREATE TABLE example (example_id INT NOT NULL,name VARCHAR( 50 ) NOT NULL,value VARCHAR( 50 ) NOT NULL,other_value VARCHAR( 50 ) NOT NULL) 通常情况下单条插入的sql语句我们会这么写: 代码如下   INSERT INTO example(example_id, name, valu