jdk 1.6
eclipse 3.3
sqlserver2000
ibatis2.3
在执行数据插入时出现乱码。多方查找资料,仍无法解决;源码如下:
sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
<property name="JDBC.ConnectionURL" value="jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=UserDB;SelectMethod=Cursor"/>
<property name="JDBC.Username" value="sa"/>
<property name="JDBC.Password" value="sa"/>
</dataSource>
</transactionManager>
<sqlMap resource="com/hanhl/map/User.xml"></sqlMap>
</sqlMapConfig>
User.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="User">
<select id="getuser" parameterClass="int" resultClass="com.hanhl.obj.User">
<!--select id,name,sex from t_user where id=#id#-->
<![CDATA[select id,name,sex from t_user where id=#id#]]>
</select>
<select id="getAlluser" resultClass="com.hanhl.obj.User">
<!--select * from t_user-->
<![CDATA[select * from t_user]]>
</select>
<insert id="insertuser" parameterClass="com.hanhl.obj.User">
<!--insert into t_user values(#name#,#sex#)-->
<![CDATA[insert into t_user values(#name#,#sex#)]]>
</insert>
<delete id="delete user" parameterClass="int">
<!--delete from t_user where id=#id#-->
<![CDATA[delete from t_user where id=#id#]]>
</delete>
</sqlMap>
User:
package com.hanhl.obj;
import java.io.Serializable;
@SuppressWarnings("serial")
public class User implements Serializable {
private int id;
private String name;
private int sex;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
}
TestClass:
package com.hanhl.unmi;
import java.io.Reader;
import java.nio.charset.Charset;
import java.util.Iterator;
import java.util.List;
import com.hanhl.obj.User;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class MySqlMapConfig {
@SuppressWarnings("unchecked")
public static void main(String[] args) throws Exception{
//从配置文件中得到SqlMapClient对象
Reader reader = Resources.getResourceAsReader("com/hanhl/xml/salMapConfig.xml");
SqlMapClient sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
//创建用户数据
for(int i=0; i<10; i++){
User user = new User();
user.setName("我");
if(i%2==0){
user.setSex(0);
}else{
user.setSex(1);
}
sqlMapper.insert("insertuser", user);
}
//查询用户数据
List users = sqlMapper.queryForList("getAlluser");
for (Iterator iter = users.iterator(); iter.hasNext();) {
User user = (User) iter.next();
System.out.println(user.getId());
System.out.println(user.getName());
System.out.println(user.getSex());
}
// for(Iterator iter = users.iterator(); iter.hasNext();){
// User user = (User) iter.next();
// if(user.getSex()!=1||user.getSex()!=0){
// sqlMapper.delete(String.valueOf(user.getId()));
// }
// }
}
}
以上信息在执行后,不出错,但是数据库中name字段为“ ”空格 ,无法显示插入的“我”,请各位指点,初次接触ibatis请各位提供宝贵学习资料,在下不甚感激......
解决之道: 数据库驱动换成jtds(驱动下载链接)
http://www.dy-chem.com/wmin/art/list2.asp?page=1&id=57即可;代码如下
<property name="JDBC.Driver" value="net.sourceforge.jtds.jdbc.Driver"/>
<property name="JDBC.ConnectionURL" value="jdbc:jtds:sqlserver://localhost:1433/UserDB;charset=UTF-8"/>后面的charset=UTF-8/GB2312可要可不要!!
分享到:
相关推荐
本文将详细讨论如何解决Ibatis中的乱码问题,特别是涉及到GBK和ISO_8859_1编码格式时的解决方案。 首先,我们需要了解乱码产生的原因。乱码通常是因为字符编码不一致导致的。在Java和数据库之间进行数据交互时,...
在这个项目中,我们看到的是一个基于Spring、Struts和Ibatis的整合应用,主要实现了图书管理系统的增删改查(CRUD)功能,并且特别关注了中文乱码的处理。下面我们将详细探讨这些知识点。 首先,Spring框架是一个...
然而,开发过程中经常遇到的一个问题就是字符编码问题,尤其是中文乱码问题。本文将深入探讨一个关于Struts2在Internet Explorer(IE)浏览器中出现中文乱码的奇怪问题及其解决方案。 首先,中文乱码问题通常涉及到...
4. **社区支持**:作为一个成熟的开源项目,ibatis拥有庞大的用户群体和活跃的社区支持,这对于解决使用过程中遇到的问题非常有帮助。 ### 三、ibatis的应用场景 - **数据访问层的抽象**:ibatis可以作为数据访问...
在使用MyBatis框架进行数据操作时,可能会遇到字符编码问题,导致乱码现象。这里主要探讨的是关于MyBatis(以及它...总的来说,解决MyBatis乱码问题的关键在于确保数据传输的每个环节都使用一致且兼容中文的字符编码。
- 配置了一个名为`encodingFilter`的Filter,用于解决中文乱码问题,设置了编码为`UTF-8`。 3. **其他配置**: - 设置了会话超时时间为10分钟。 - 指定了默认首页为`index.jsp`。 ### `struts.xml`配置详解 `...
CHMWriter V3.0较上个版本改进的...2)彻底解决了中文乱码问题. 生成的CHM文件,不会再出现目录项中文乱码问题了. 3)提供了exe可执行文件. 直接双击"CHMWriter.exe"即可运行软件,不用再敲命令行,运行"CHMWriter.jar"了.
- `CharacterEncodingFilter`:用于设置字符编码,避免中文乱码问题。 - **其他配置**: - `session-timeout`:设置 session 的超时时间。 - `welcome-file-list`:定义项目的默认欢迎页面。 #### 2.2 struts....
- 在`web.xml`中配置`CharacterEncodingFilter`解决中文乱码问题。 - 配置Struts2的核心过滤器`StrutsPrepareAndExecuteFilter`,以便处理所有请求。 - 为了减少配置,创建`DynamicActionSupport.java`,这个类...
- 防止中文乱码:可以通过修改MySQL配置文件或在命令行中设置字符集,确保数据库支持UTF-8编码。 - 数据类型兼容性:如SQL Server的bit类型在MySQL中需转换为tinyint(1)。 3. **SQL语句的修改**: - 项目中的SQL...
- Struts处理中文乱码的方法:通常需要在Filter中设置字符编码。 - Struts中Action与Tag的区别:Action是业务逻辑处理,而Tag是视图展示辅助。 - Hibernate的乐观锁实现:通过版本字段或时间戳实现。 - ...
2. **数据导入与编码设置**:确保数据库编码正确,防止中文等多语言数据出现乱码。这可能需要修改数据库配置文件或使用SQL命令来设置字符集。例如,对于MySQL,可以设置`default-character-set`为`utf8`。 3. **...
- **服务器到客户端**: `response.setCharacterEncoding("UTF-8")`用于设置服务器返回给客户端的数据的编码方式,同样是为了避免中文乱码问题。 #### 9. 表单控件样式调整 - 使用内联样式如`style="height:50px;...
**解析**:这里定义了一个字符编码过滤器,主要用于解决中文乱码问题。`CharacterEncodingFilter`设置请求和响应的编码方式为`utf-8`。`<url-pattern>/*</url-pattern>`表示该过滤器应用于所有请求路径。 #### 四、...