我用JSP+JAVABEAN接入数据库的..写入MS_SQL代码如下...请问怎样能够处理乱码问题?
//MessageBean.java
package boy;
import java.sql.*;
import java.util.*;public class MessageBean {
private Connection con;
MessageVO msg;
public MessageBean()
{
String CLASSFORNAME="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String SERVANDDB="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=topic ";
String USER="sa";
String PWD="";
try{
Class.forName(CLASSFORNAME);
con=DriverManager.getConnection(SERVANDDB,USER,PWD);
}
catch(Exception e)
{e.printStackTrace();}}
public void setMessage(MessageVO msg)
{
this.msg=msg;
}
public void addMessage()
{
try{
PreparedStatement stm=con.prepareStatement("insert into message values(?,?,?,?,?)");
stm.setString(1,msg.getTitle());
stm.setString(2,msg.getName());
stm.setDate(3,new java.sql.Date(new java.util.Date().getDate()));
if((msg.getEmail()).length()==0)
stm.setString(5,null);
else
stm.setString(5,msg.getEmail());
stm.setString(4,msg.getContent());
try
{
stm.executeQuery();
}
catch(Exception e)
{
}
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public Collection getMessage()
throws Exception
{
Collection ret=new ArrayList();
try{
Statement stm=con.createStatement();
ResultSet result=stm.executeQuery("select count(*) from message");
int message_count=0;
if(result.next())
{
message_count=result.getInt(1);
result.close();
}
if(message_count>0)
{
result=stm.executeQuery("select * from message ");
while(result.next())
{
String title=result.getString("title");
String name=result.getString("name");
String mail=result.getString("mail");
String content=result.getString("content");
java.sql.Date today=result.getDate("today");
MessageVO message=new MessageVO();
message.setName(name);
message.setTitle(title);
message.setContent(content);
message.setDate(today);
message.setEmail(mail);
ret.add(message);
}
result.close();
stm.close();
}
con.close();
}
catch(Exception e)
{
e.printStackTrace();
throw e;
}
return ret;
}
}
//addMessage.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,boy.*,java.util.*,java.sql.*"%>
<jsp:useBean id="messageVo" class="boy.MessageVO" scope="page"/>
<jsp:setProperty name="messageVo" property="*"/>
</jsp:useBean>
<jsp:useBean id="messageBean" class="boy.MessageBean" scope="page"/> %>
<%
try
{
messageBean.setMessage(messageVo);
messageBean.addMessage();
}
catch(Exception e)
{
e.printStackTrace();
}
%>
问题主要在这二个文件中吧...我是用直联方法连入SQL2000的~主要是写入数据库时出现乱码,请问怎样才能解决这个问题?
//MessageBean.java
package boy;
import java.sql.*;
import java.util.*;public class MessageBean {
private Connection con;
MessageVO msg;
public MessageBean()
{
String CLASSFORNAME="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String SERVANDDB="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=topic ";
String USER="sa";
String PWD="";
try{
Class.forName(CLASSFORNAME);
con=DriverManager.getConnection(SERVANDDB,USER,PWD);
}
catch(Exception e)
{e.printStackTrace();}}
public void setMessage(MessageVO msg)
{
this.msg=msg;
}
public void addMessage()
{
try{
PreparedStatement stm=con.prepareStatement("insert into message values(?,?,?,?,?)");
stm.setString(1,msg.getTitle());
stm.setString(2,msg.getName());
stm.setDate(3,new java.sql.Date(new java.util.Date().getDate()));
if((msg.getEmail()).length()==0)
stm.setString(5,null);
else
stm.setString(5,msg.getEmail());
stm.setString(4,msg.getContent());
try
{
stm.executeQuery();
}
catch(Exception e)
{
}
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public Collection getMessage()
throws Exception
{
Collection ret=new ArrayList();
try{
Statement stm=con.createStatement();
ResultSet result=stm.executeQuery("select count(*) from message");
int message_count=0;
if(result.next())
{
message_count=result.getInt(1);
result.close();
}
if(message_count>0)
{
result=stm.executeQuery("select * from message ");
while(result.next())
{
String title=result.getString("title");
String name=result.getString("name");
String mail=result.getString("mail");
String content=result.getString("content");
java.sql.Date today=result.getDate("today");
MessageVO message=new MessageVO();
message.setName(name);
message.setTitle(title);
message.setContent(content);
message.setDate(today);
message.setEmail(mail);
ret.add(message);
}
result.close();
stm.close();
}
con.close();
}
catch(Exception e)
{
e.printStackTrace();
throw e;
}
return ret;
}
}
//addMessage.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,boy.*,java.util.*,java.sql.*"%>
<jsp:useBean id="messageVo" class="boy.MessageVO" scope="page"/>
<jsp:setProperty name="messageVo" property="*"/>
</jsp:useBean>
<jsp:useBean id="messageBean" class="boy.MessageBean" scope="page"/> %>
<%
try
{
messageBean.setMessage(messageVo);
messageBean.addMessage();
}
catch(Exception e)
{
e.printStackTrace();
}
%>
问题主要在这二个文件中吧...我是用直联方法连入SQL2000的~主要是写入数据库时出现乱码,请问怎样才能解决这个问题?
解决方案 »
- springmvc+ibatis事务不回滚,ibatis用的不多,请大家帮忙看看
- jstl
- 献上100积分,求解一个非常困惑的问题(jsp+javabean+sqlserver2008)
- jsp页面中文本框的值如何保存
- jsp菜鸟入门:
- 系统发布到服务器,两台电脑访问页面显示不同
- 对于初学者,应该注意文档,还是更加注意编码的学习?
- 我想在目录新建c:/111/xxx.java文件,但是目录c:/111/不存在,创建xxx.java出错,请问怎么创建文件夹
- jspSmartupload报错问题
- 救救我吧,高手们!!!!!!!!!!!!!!!!!!!!
- struts中关于Action提取数据的问题
- SQL数据库运行时错误??????
如果是WEB应用就用request.setCharacterEncoding("utf-8");将请求的信息转码成数据库的字符集
或者可将单个字符进行转码:比如 String a = "哈哈"; Sting b =new String(a.getBytes("ISO-8859-1"),"utf-8");b字符串就是经过转码后的
Sting b =new String(a.getBytes("ISO-8859-1"),"GBK");
基本上和楼上一样
据说用GBK的网络带宽比较小 呵呵