mysql中文版无法插入中文怎么办、。?

使用JDBC向mysql数据库添加数据时为什么只能添加字母而不能添加汉字,而且我设置的是varchar(20),下面是报的错
使用JDBC向mysql数据库添加数据时为什么只能添加字母而不能添加汉字,而且我设置的是varchar(20),下面是报的错
在name字段中添加的参数的长度超标
仔细查看一下数据库中name字段的长度
再看一下你插入数据时给name的参数的长度。
数据库中name字段的长度设置为20,我插入的就是一个汉字(也就是2),不可能超标的
你把SQL语句打印出来看一下
汉字不能识别
是编码的问题
看一下你mysql的编码是什么
要和你的项目统一编码
提问者 的感言:真心佩服你,谢谢! 相关知识
其他回答 (3)
長度超出約束範圍。你要做個判斷,超出長度就不對db操作。
这是你的mysql字符编码问题,把字符编码从默认的latin1改成utf8或者gbk、gb2312都行,看你的项目需要
相关知识等待您来回答
编程领域专家
& &SOGOU - 京ICP证050897号mysql 不能插入中文的解决办法,修改mysql的字符集
阅读:1584次&&&时间: 06:20:46&&
Mysql第一天:一 . 安装与配置MYSQL二 . 常用mysql命令行命令1 .mysql的启动与停止启动MYSQL服务 net start mysql停止MYSQL服务 net stop mysql2 . netstat –na | findstr 3306 查看被监听的端口 , findstr用于查找后面的端口是否存在3 . 在命令行中登陆MYSQL控制台 , 即使用 MYSQL COMMEND LINE TOOL&&&&语法格式 mysql –user=root –password=123456 db_name&&&&&&或 mysql –uroot –p123456 db_name4 . 进入MYSQL命令行工具后 , 使用 或s 查看运行环境信息5 . 切换连接数据库的语法 : use new_&&6 . 显示所有数据库 :7 . 显示数据库中的所有表 :8 . 显示某个表创建时的全部信息 : show create table table_9 . 查看表的具体属性信息及表中各字段的描述&&Describe table_ 缩写形式 : desc table_三 。 MySql中的SQL语句1 . 数据库创建 : Create database db_数据库删除 : Drop database db_ 删除时可先判断是否存在,写成 : drop database if exits db_name&&2 . 建表 : 创建数据表的语法 : create table table_name (字段1 数据类型 , 字段2 数据类型);&&例 : create table mytable (id int , username char(20));&&删表 : drop table table_ 例 :8 . 添加数据 : Insert into 表名 [(字段1 , 字段2 , ….)] values (值1 , 值2 , …..);如果向表中的每个字段都插入一个值,那么前面 [ ] 括号内字段名可写也可不写&&例 : insert into mytable (id,username) values (1,’zhangsan’);9 . 查询 : 查询所有数据 : select * from table_查询指定字段的数据 : select 字段1 , 字段2 from table_例 : select id,username from mytable where id=1多表查询语句------------参照第17条实例10 . 更新指定数据 , 更新某一个字段的数据(注意,不是更新字段的名字)Update table_name set 字段名=’新值’ [, 字段2 =’新值’ , …..][where id=id_num] [order by 字段 顺序]例 : update mytable set username=’lisi’ where id=1;Order语句是查询的顺序 , 如 : order by id desc(或asc) , 顺序有两种 : desc倒序(100—1,即从最新数据往后查询),asc(从1-100),Where和order语句也可用于查询select 与删除delete11 . 删除表中的信息 :&&&&删除整个表中的信息 : delete from table_&&删除表中指定条件的语句 : delete from table_name where 条件语句 ; 条件语句如 : id=3;&&12 . 创建数据库用户一次可以创建多个数据库用户如:CREATE USER username1 identified BY ‘password’ , username2 IDENTIFIED BY ‘password’….13 . 用户的权限控制:grant&&库,表级的权限控制 : 将某个库中的某个表的控制权赋予某个用户&&Grant all ON db_name.table_name TO user_name [ indentified by ‘password’ ];14 . 表结构的修改(1)增加一个字段格式:alter table table_name add column (字段名 字段类型); ----此方法带括号(2)指定字段插入的位置:alter table table_name add column 字段名 字段类型 after 某字段;删除一个字段:alter table table_name drop字段名;(3)修改字段名称/类型alter table table_name change 旧字段名 新字段名 新字段的类型;(4)改表的名字alter table table_name rename to new_table_(5)一次性清空表中的所有数据truncate table table_ 此方法也会使表中的取号器(ID)从1开始15 . 增加主键,外键,约束,索引。。。。(使用方法见17实例)① 约束(主键Primary key、唯一性Unique、非空Not Null)② 自动增张 auto_increment③外键Foreign key-----与reference table_name(col_name列名)配合使用,建表时单独使用④ 删除多个表中有关联的数据----设置foreign key 为set null ---具体设置参考帮助文档16 . 查看数据库当前引擎&&SHOW CREATE TABLE table_&&修改数据库引擎&&ALTER TABLE table_name ENGINE=MyISAM | InnoDB;17 . SQL语句运用实例:--1 建users表create table users (id int primary key auto_increment,nikename varchar(20) not null unique,password varchar(100) not null,address varchar(200), reg_date timestamp not null default CURRENT_TIMESTAMP);--2 建articles表,在建表时设置外键create table articles (id int primary key auto_increment,content longtext not null,userid int,constraint foreign key (userid) references users(id) on delete set null);-------------------------------------------------------------------------2.1 建articles表,建表时不设置外键&&create table articles (id int primary key auto_increment,content longtext not null,userid int);--2.2 给articles表设置外键&&alter table articles add constraint foreign key (userid) references users(id)--------------------------------------------------------------------------3. 向users表中插入数据,同时插入多条insert into users (id,nikename,password,address) values (1,'lyh1','1234',null),(10,'lyh22','4321','湖北武汉'),(null,'lyh333','5678','北京海淀');--4. 向article中插入三条数据insert into articles (id,content,userid) values (2,'hahahahahaha',11),(null,'xixixixixix',10),(13,'aiaiaiaiaiaiaiaiaiaiaiaia',1),(14,'hohoahaoaoooooooooo',10);--5. 进行多表查询,选择users表中ID=10的用户发布的所有留言及该用户的所有信息select articles.id,articles.content,users.* from users,articles where users.id=10 and articles.userid=users.id order by articles.--6. 查看数据库引擎类型sho--7. 修改数据库引擎类型alter table users engine=MyISAM; ---因为users表中ID被设置成外键,执行此句会出错--8. 同表查询,已知一个条件的情况下.查询ID号大于用户lyh1的ID号的所有用户select a.id,a.nikename,a.address from users a,users b where b.nikename='lyh1' and a.id&b.------也可写成select id,nikename,address from users where id&(select id from users where nikename='lyh1');9. 显示年龄比领导还大的员工:select a.name from users a,users b where a.managerid=b.id and a.age&b.查询编号为2的发帖人: 先查articles表,得到发帖人的编号,再根据编号查users得到的用户名。接着用关联查询.select * from articles,users得到笛卡儿积,再加order by articles.id以便观察&&使用select * from articles,users where articles.id=2 筛选出2号帖子与每个用户的组合记录再使用select * from articles,users where articles.id=2 and articles.userid=users.id选出users.id等于2号帖的发帖人id的记录.&&只取用户名:select user where user.id=(select userid from articles where article.id =2)找出年龄比小王还大的人:假设小王是28岁,先想找出年龄大于28的人select * from users where age&(select age from users where name='xiaowang');*****要查询的记录需要参照表里面的其他记录:select a.name from users a,users b where b.name='xiaowang' and a.age&b.age表里的每个用户都想pk一下.select a.nickname,b.nickname from users a,users b where a.id&b.更保险的语句:select a.nickname,b.nickname from (select * from users order by id) a,(select * from users order by id) b where a.id&b.再查询某个人发的所有帖子.select b.* from articles a , articles b where a.id=2 and a.userid=b.userid说明: 表之间存在着关系,ER概念的解释,用access中的示例数据库演示表之间的关系.只有innodb引擎才支持foreign key,mysql的任何引擎目前都不支持check约束。四、字符集出现错误解决办法出现的问题:mysql& update users-& set username='关羽'-& where userid=2;ERROR 1366 (HY000): Incorrect string value: 'xB9xD8xD3xF0' for column 'username' at row 1向表中插入中文字符时,出现错误。mysql& select *+--------+----------+| userid | username |+--------+----------+| 2 | ???? || 3 | ???? || 4 | ?í?ù |+--------+----------+3 rows in set (0.00 sec)表中的中文字符位乱码。解决办法:使用命令:mysql&--------------mysql Ver 14.12 Distrib 5.0.45, for Win32 (ia32)Connection id: 8Current database: testCurrent user: root@localhostSSL: Not in useUsing delimiter: ;Server version: 5.0.45-community-nt MySQL Community Edition (GPL)Protocol version: 10Connection: localhost via TCP/IPServer characterset: latin1Db characterset: latin1Client characterset: gbkConn. characterset: gbkTCP port: 3306Uptime: 7 hours 39 min 19 secThreads: 2 Questions: 174 Slow queries: 0 Opens: 57 Flush tables: 1 Open tables: 1 Queries per second avg: 0.006--------------查看mysql发现Server characterset,Db characterset的字符集设成了latin1,所以出现中文乱码。mysql&+----------------+| Tables_in_test |+----------------+| users |+----------------+1 row in set (0.00 sec)更改表的字符集。mysql& alter table users character set GBK;Query OK, 3 rows affected (0.08 sec)Records: 3 Duplicates: 0 Warnings: 0查看表的结构:mysql&ERROR ): You have an error in your SQL check the manual thatcorresponds to your MySQL server version for the right syntax to use near 'users' at line 1mysql& sho+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Table|+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------+| users | CREATE TABLE `users` (`userid` int(11) default NULL,`username` char(20) character set latin1 default NULL) ENGINE=InnoDB DEFAULT CHARSET=gbk |+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)mysql&+----------+----------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+----------+----------+------+-----+---------+-------+| userid | int(11) | YES | | NULL | || username | char(20) | YES | | NULL | |+----------+----------+------+-----+---------+-------+2 rows in set (0.02 sec)这时向表中插入中文然后有错误。mysql& insert into users values(88,'中文');ERROR 1366 (HY000): Incorrect string value: 'xD6xD0xCExC4' for column 'username' at row 1mysql& insert into users values(88,'中文');ERROR 1366 (HY000): Incorrect string value: 'xD6xD0xCExC4' for column 'username' at row 1还要更改users表的username的字符集。mysql& alter table users modify username char(20)ERROR 1366 (HY000): Incorrect string value: 'xC0xEExCBxC4' for column 'username' at row 1mysql& alter table users modify username char(20)ERROR 1366 (HY000): Incorrect string value: 'xC0xEExCBxC4' for column 'username' at row 1因为表中已经有数据,所以更改username字符集的操作没有成***清空users表中的数据mysql& Query OK, 3 rows affected (0.01 sec)从新更改user表中username的字符集mysql& alter table users modify username char(20)Query OK, 0 rows affected (0.06 sec)Records: 0 Duplicates: 0 Warnings: 0这时再插入中文字符,插入成***。mysql& insert into users values(88,'中文');Query OK, 1 row affected (0.01 sec)mysql& select *+--------+----------+| userid | username |+--------+----------+| 88 | 中文 |+--------+----------+1 row in set (0.00 sec)mysql&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
Copyright &
All Rights Reserved查看: 387|回复: 4
对了,问下高手们,为何MySql数据库连接上了但是无法执行操作?
主题帖子积分
资深会员, 积分 2336, 距离下一级还需 664 积分
资深会员, 积分 2336, 距离下一级还需 664 积分
&&请问为何我用中级例程的两个自带例程,修改连接数据库IP帐号密码等信息已经修改为自己的正确值,我现在调试运行都是返回连接成功并跳转至窗口1了,但是却无法执行添加查询修改删除等操作呢?代码如下都是自带例程,应该没有错,版本用的E4A的4.1和4.2效果一样,数据库服务器用的
云网互联的MYSQL免费数据库(只申请了免费空间赠送的数据库,并没有特殊设置),中间件的两个文件也是正确的,地址在下面的连接代码里,可以自动跳转至E4A官网。请高手帮忙看看为何连接成功却无法执行操作?
& &&&(麻烦留言或联系我的QQ:(添加答案:通))
主窗口代码:
事件 按钮1.被单击()
& & & & 如果 MySQL_连接(&http://sunliantong.y.cscces.net/e4amysqlzjj/openapi_unsafe.php&,&221.229.166.197:3306&,编辑框1.内容,编辑框2.内容,&密码我就暂时不发了&)=真 则 '注意,请将服务器IP等信息改成你自己,如果要连接内网中的数据库,请先使用nat123工具进行端口映射
& & & &&&& & & & 信息框(&信息&,&登录成功\n& & MySQL_取服务器信息(1),&确定&)
& & & & & & & & 切换窗口(创建 窗口1)
& & & & 否则
& & & && &信息框(&信息&,&登录失败,请重试&,&确定&)
& & & & 结束 如果& & & &
事件 按钮2.被单击()
& & & & 结束程序()
窗口1代码:
事件 按钮1.被单击()
& & & & 变量 查询结果 为 文本型
& & & & 变量 记录数组 为 文本型()
& & & & 变量 当前记录 为 文本型
& & & & 变量 字段数组 为 文本型()
& & & & 变量 计次1 为 整数型
& & & & 变量 计次2 为 整数型
& & & & 查询结果 = MySQL_查询记录(&person&,&id,name,age&,&name='张飞'&) '查询name字段值为张三的那条记录的所有字段值
& & & & 记录数组 = 分割文本(查询结果,&|.*.|&)
& & & & 变量循环首 计次1 = 0 至 取数组成员数(记录数组)-1
& & & & & & & & 当前记录 = 记录数组(计次1)
& & & & & & & & 当前记录 = &|.+.|& & 当前记录
& & & & & & & & 字段数组 = 取指定文本(当前记录,&|.+.|&,&|.+.|&)
& & & & & & & & 变量循环首 计次2 = 0 至 取数组成员数(字段数组)-1
& & & & & & & & & & & & 编辑框1.内容 = 编辑框1.内容 & &\n& & 字段数组(计次2)
& & & & & & & & 变量循环尾
& & & & 变量循环尾
事件 按钮3.被单击()
& & & & 变量 修改结果 为 逻辑型
& & & & 修改结果 = MySQL_修改记录(&person&,&age='40'&,&name='张飞'&) '将张飞的年龄age修改为40岁
& & & & 如果 修改结果 = 真 则
& & & & & & & & 弹出提示(&修改成功&)
& & & & 否则& & & &
& & & & & & & & 弹出提示(&修改失败&)
& & & & 结束 如果
事件 按钮4.被单击()
& & & & 变量 添加结果 为 逻辑型
& & & & 添加结果 = MySQL_添加记录(&person&,&id,name,age&,&'6','刘经理','50'&) '添加一条新的记录
& & & & 如果 添加结果 = 真 则
& & & & & & & & 弹出提示(&添加成功&)
& & & & 否则& & & &
& & & & & & & & 弹出提示(&添加失败&)
& & & & 结束 如果
事件 按钮5.被单击()
& & & & 变量 删除结果 为 逻辑型
& & & & 删除结果 = MySQL_删除记录(&person&,&name='刘经理'&) '删除名字name为刘经理的这条记录
& & & & 如果 删除结果 = 真 则
& & & & & & & & 弹出提示(&删除成功&)
& & & & 否则& & & &
& & & & & & & & 弹出提示(&删除失败&)
& & & & 结束 如果& & & &
事件 按钮2.被单击()
& & & & MySQL_断开连接()
& & & & 结束程序()
主题帖子积分
中级会员, 积分 233, 距离下一级还需 267 积分
中级会员, 积分 233, 距离下一级还需 267 积分
我也是遇到同样问题啊,麻烦告诉也加我Q:,加我请注明&易安卓&
主题帖子积分
初级会员, 积分 135, 距离下一级还需 65 积分
初级会员, 积分 135, 距离下一级还需 65 积分
看看还有没有其他内容
主题帖子积分
资深会员, 积分 2336, 距离下一级还需 664 积分
资深会员, 积分 2336, 距离下一级还需 664 积分
看看还有没有其他内容
这里是全部代码,你也可以看到你的自带例程里的数据库代码,所以我觉得是不是这个空间要设置什么呢?还是中间件问题?但是中间件也是下的论坛的新版本,测试没问题
主题帖子积分
高级会员, 积分 514, 距离下一级还需 486 积分
高级会员, 积分 514, 距离下一级还需 486 积分
一样的问题,求解
Powered by
Template By

我要回帖

更多关于 mysql手册中文版下载 的文章

 

随机推荐