Create DATABASE IF NOT EXISTS aaa default charset utf8 COLLATE utf8_general_ci;
用这个建好的数据库,使用语句查询, TQuery* qUserRole=new TQuery(this);
qUserRole->Close();
qUserRole->SQL->Clear();
qUserRole->SQL->Add("select ROLEID from USER ");
qUserRole->SQL->Add("where USERID=:USERID ");
qUserRole->ParamByName("USERID")->AsString=userID;
qUserRole->Prepare();
qUserRole->Open();
sRole=qUserRole->FieldByName("ROLEID")->AsString;
查出来的结果报错,取到的值是乱码...然后又重新建了一个数据库,
Create DATABASE IF NOT EXISTS bbb default charset latin1 COLLATE latin1_general_ci;依旧乱码
最后又建了一个数据库,
Create DATABASE IF NOT EXISTS bbb default charset latin1;这次取到的值是NULL,
这是怎么回事? MySql默认的校对是哪种?
用这个建好的数据库,使用语句查询, TQuery* qUserRole=new TQuery(this);
qUserRole->Close();
qUserRole->SQL->Clear();
qUserRole->SQL->Add("select ROLEID from USER ");
qUserRole->SQL->Add("where USERID=:USERID ");
qUserRole->ParamByName("USERID")->AsString=userID;
qUserRole->Prepare();
qUserRole->Open();
sRole=qUserRole->FieldByName("ROLEID")->AsString;
查出来的结果报错,取到的值是乱码...然后又重新建了一个数据库,
Create DATABASE IF NOT EXISTS bbb default charset latin1 COLLATE latin1_general_ci;依旧乱码
最后又建了一个数据库,
Create DATABASE IF NOT EXISTS bbb default charset latin1;这次取到的值是NULL,
这是怎么回事? MySql默认的校对是哪种?
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
我的失误..调试的时候观测取出来的变量的值,提示如下:
E2122 Fuction Call terminated by unhandled exception 0xeedfade at address 0x7c812a5b我的期望值是空值...这条SQL其实是这样:
select ROLEID from USER where USERID=NULL;
仅这句SQL应该不会有任何问题
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+----------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| USERID | varchar(10) | latin1_swedish_ci | NO | PRI | NULL | | select,insert,update,references | |
| USERNAME | varchar(10) | latin1_swedish_ci | YES | | NULL | | select,insert,update,references | |
| PASSWORD | varchar(10) | latin1_swedish_ci | YES | | NULL | | select,insert,update,references | |
| ROLEID | varchar(6) | latin1_swedish_ci | YES | | NULL | | select,insert,update,references | |
+----------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
不正常的数据库显示如下结果:+----------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+----------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| USERID | varchar(10) | latin1_swedish_ci | NO | PRI | NULL | | select,insert,update,references | |
| USERNAME | varchar(10) | latin1_swedish_ci | YES | | NULL | | select,insert,update,references | |
| PASSWORD | varchar(10) | latin1_swedish_ci | YES | | NULL | | select,insert,update,references | |
| ROLEID | varchar(6) | latin1_swedish_ci | YES | | NULL | | select,insert,update,references | |
+----------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
不正常的结果如下:+----------+-------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+----------+-------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| USERID | varchar(10) | utf8_general_ci | NO | PRI | NULL | | select,insert,update,references | |
| USERNAME | varchar(10) | utf8_general_ci | YES | | NULL | | select,insert,update,references | |
| PASSWORD | varchar(10) | utf8_general_ci | YES | | NULL | | select,insert,update,references | |
| ROLEID | varchar(6) | utf8_general_ci | YES | | NULL | | select,insert,update,references | |
+----------+-------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
select ROLEID from USER where USERID IS NULL;
业务描述:
源库 的表 以及该表里所有字段 全部都是latin1
目的库的表 以及该表里所有字段 也全部都是latin1
现在发现从源库 用java代码取出的数据是当是某些不明国家的字符集的时候insert他们到目的库发现失败 (我将这些字段类型改为utf8 发现导出是成功的 但是工程禁止使用utf8, 所以只能考虑其他方法解决问题) Â?panilsko - 1. liga - basketbal" eventid="183511.1
Exception in thread "main" java.sql.SQLException: Incorrect string value: '\xC2\x8Apani...' for column 'colName' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3376)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3308)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1837)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961) 这里'colName' 字段类型是varchar 字符集是latin1 不允许修改
代码部分如下
colNam=new String(colNam.getBytes("utf-8"),"latin1"); //我已经对这个字符进行了转换
PreparedStatement pStmt=null;
pStmt=conn.prepareStatement("INSERT INTO aa" +
"(id,typeId,colName)"+
" values(?,?,?)");
conn.setAutoCommit(false); pStmt.setString(1,id);
pStmt.setString(2,typeId);
pStmt.setString(3,colName);
int j=pStmt.executeUpdate();
conn.commit();
不知道如何解决问题 (提示 我在某台机器上是可以正常执行这段代码,数据也全部导到目的db机器;但是换到其他机器就是通不过 Exception in thread "main" java.sql.SQLException: Incorrect string value: '\xC2\x8Apani...' for column 'colName' at row 1)