java 转码后插入数据库的时候报错

zjs2297665qq 2017-07-21 04:00:45
//从页面获取数据
public void addFee(HttpServletRequest req,HttpServletResponse res)throws ServletException, IOException{
req.setCharacterEncoding("utf-8");
String gdbh=req.getParameter("gdbh");
String cqsj=req.getParameter("cqsj");
String jssj=req.getParameter("jssj");............


//sql插入数据(用Interactive SQL)
String sql="insert into sunrise.xm_pxmd (sjh,gw,xm,zw,skxs,jssp......
ps.setString(1,CharUtil.dataSet(t.getSjh()));
ps.setString(2,CharUtil.dataSet(t.getGw()));
ps.setString(3,CharUtil.dataSet(t.getXm()))..............

//转码的类:
public class CharUtil {
public static String charSet(String str){
if(str==null){
return "";
}
try {
return new String (str.getBytes("cp1252"),"gbk");
} catch (UnsupportedEncodingException e) {

//e.printStackTrace();
throw new RuntimeException("转码异常");
}

}

public static String dataSet(String str){
if(str==null){
return "";
}
try {
return new String (str.getBytes("gbk"),"cp1252");
} catch (UnsupportedEncodingException e) {

//e.printStackTrace();
throw new RuntimeException("转码异常");
}

}

只要数页面存的数据是中文,就无法插入数据 (控制台输出中文就是?????,请问大神怎么解决)

Training [sjh=1234567890, xm=哈哈, gw=1, zw=1, skxs=1.2, jssp=0, jsrz=2, jsnx=1, yjnr=1, rjnr=2, cpaqx=3, cpyyx=4, yyxsm=哈哈学校, cpgn=0, gnsm=好好学习]
1111111
45454
1234567890
1
com.sybase.jdbc.SybSQLException: ASA Error -193: primary key for table 'xm_pxmd' is not unique
????
1
1.2
0
2
1
1
2
3
0
???????
0
??????
121112
at com.sybase.tds.Tds.processEed(Tds.java)
at com.sybase.tds.Tds.nextResult(Tds.java)
at com.sybase.jdbc.ResultGetter.nextResult(ResultGetter.java)
at com.sybase.jdbc.SybStatement.nextResult(SybStatement.java)
at com.sybase.jdbc.SybStatement.updateLoop(SybStatement.java)
at com.sybase.jdbc.SybStatement.executeUpdate(SybStatement.java)
at com.sybase.jdbc.SybPreparedStatement.executeUpdate(SybPreparedStatement.java)
at cn.sunrise.dao.TrainingDao.addPxmd(TrainingDao.java:53)
at cn.sunrise.web.RegisTerServlet.addpxmd(RegisTerServlet.java:305)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at cn.sunrise.web.MainServlet.doPost(MainServlet.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2549)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2538)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:744)
1




































...全文
166 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjs2297665qq 2017-07-21
  • 打赏
  • 举报
回复
主键的问题解决了!!现在就是乱码的问题
Buguanjia-Ssj 2017-07-21
  • 打赏
  • 举报
回复
primary key for table 'xm_pxmd' is not unique
这说明你插进去的时候主键重复了,自己看下数据有没有什么错误的

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧