读书人

SQL 中字段值不能是中文的有关问题

发布时间: 2012-01-15 22:57:49 作者: rapoo

SQL 中字段值不能是中文的问题
public int kouanID(String kouan)
{
int kouanid=0;
try
{
PreparedStatement ps = DB.getPs( "select kouanid from kouanbiao where kouanmingcheng= ' "+kouan+ " ' ");

ResultSet rs = ps.executeQuery();
rs.next();
kouanid = rs.getInt(1);
}catch(Exception e)
{
e.printStackTrace();
}
return kouanid;

}
kouan 值是中文的,而SQL中的kouanmingcheng也是中文的
PreparedStatement ps = DB.getPs( "select kouanid from kouanbiao where kouanmingcheng= ' "+kouan+ " ' ");却查不出来
所以一直返回一个0
结果我把SQL里 kouanmingcheng 改成英文 再把 kouan改成英文 却是返回正常
这是为什么?SQL里难道就不能存中文?
请问各位高手我该怎么解决?

[解决办法]
id = kouanID( new String(kouan.getBytes( "ISO-8859-1 "), "GBK ") );
[解决办法]
写个过滤器或者和LS一样处理一下
[解决办法]
你刚才的那个帖子也看过了
可以加个过滤器,在web.xml中配置一下:
在web.xml中添加如下代码:
<filter>
<filter-name> Set Character Encoding </filter-name>
<filter-class> org.common.filter.EncodingFilter </filter-class>
</filter>
<filter-mapping>
<filter-name> Set Character Encoding </filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>

过滤器类的代码如下:
package org.common.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class EncodingFilter implements Filter
{

public void init(FilterConfig filterConfig) throws ServletException {
}


public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {



request.setCharacterEncoding( "GBK ");
chain.doFilter(request,response);

}

public void destroy() {
}

}
[解决办法]
既然都用了PreparedStatement ,为什么传参数的时候不用 "? " 啊...
[解决办法]
编码问题
可以是中文
zjh0205() 正解

读书人网 >Java Web开发

热点推荐