0 people like this
Nov 5, 2010 |
Error:
none Add Tags
Answered question This question has been answered.
Unanswered question This question has not been answered yet.
Hello Everyone,We are having problem w/ retrieving data column that has special character from the db2 database. when we try to use the recordset.getString(columname) method we catch the exception below. Is there any workaround how to retrieve the data w/ out exception?
Error catch:
R com.ibm.db2.jcc.b.SqlException: jcct4106512306http://3.50.152 Caught java.io.CharConversionException. See attached Throwable for details. ERRORCODE=-4220, SQLSTATE=null
I tried also using getBytes method and catch different error which is : Invalid data conversion: Wrong result column type for requested conversion. ERRORCODE=-4461, SQLSTATE=42815
anyone has the idea how to solve this problem?
- Log in to reply.
-
sasami 11 Posts
0 people like this
Re: Caught java.io.CharConversionException. ERRORCODE=-4220, SQLSTATE=null
Nov 6, 2010
This is the accepted answer. This is the accepted answer.
Hmmm. May need goet more information from you to see what is going on here. Will it be too much trouble for asking the following: 1. trace An example to turn on trace: ... private static String url = "jdbc:db2://xxxxxxxxxxxx.vmec.svl.ibm.com:446/STLEC1" +":traceFile=c:/temp/jdbc4.log" +";traceLevel=" + com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL + ";"; private static String user="xxxxxxxx"; private static String password="yyyyyyyy";
...
private Connection getConnection() { String driverClassName = "com.ibm.db2.jcc.DB2Driver"; try { Class.forName( driverClassName ).newInstance(); } catch (InstantiationException e) {
e.printStackTrace(); } catch (IllegalAccessException e) {
e.printStackTrace(); } catch (ClassNotFoundException e) {
e.printStackTrace(); } try { return DriverManager.getConnection ( url, user, password);
} catch (SQLException e) {
e.printStackTrace(); } return null; }
2. what is the data type for the column ? 3. your code which could reproduce the problem- Log in to reply.
-
allen.montejo 3 Posts
0 people like this
Re: Caught java.io.CharConversionException. ERRORCODE=-4220, SQLSTATE=null
Nov 8, 2010
This is the accepted answer. This is the accepted answer.
Hi Sasami,- sasami
- Nov 6, 2010
...
private Connection getConnection() { String driverClassName = "com.ibm.db2.jcc.DB2Driver"; try { Class.forName( driverClassName ).newInstance(); } catch (InstantiationException e) {
e.printStackTrace(); } catch (IllegalAccessException e) {
e.printStackTrace(); } catch (ClassNotFoundException e) {
e.printStackTrace(); } try { return DriverManager.getConnection ( url, user, password);
} catch (SQLException e) {
e.printStackTrace(); } return null; }
2. what is the data type for the column ? 3. your code which could reproduce the problem More...
1. below is the log trace I catch.
11/8/10 17:40:31:765 SGT 0000001d SystemErr R com.ibm.db2.jcc.b.SqlException: jcct4106512306http://3.50.152 Caught java.io.CharConversionException. See attached Throwable for details. ERRORCODE=-4220, SQLSTATE=null 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.wc.a(wc.java:55) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.wc.a(wc.java:111) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.bc.a(bc.java:1766) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.bc.n(bc.java:496) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.bc.F(bc.java:1263) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.jk.d(jk.java:939) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.jk.getString(jk.java:917) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.jk.getString(jk.java:1369) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getString(WSJdbcResultSet.java:1848) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:966) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:463) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3129) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:238) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:811) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1433) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:93) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:394) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:274) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:152) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:213) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R at com.ibm.io.async.AbstractAsyncFuture.fireCompletionActions(AbstractAsyncFuture.java:195) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:194) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:741) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:863) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1510) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R Caused by: java.nio.charset.MalformedInputException: Input length = 127 at com.ibm.db2.jcc.b.u.a(u.java:19) at com.ibm.db2.jcc.b.bc.a(bc.java:1762) at com.ibm.db2.jcc.b.bc.n(bc.java:496) at com.ibm.db2.jcc.b.bc.F(bc.java:1263) at com.ibm.db2.jcc.b.jk.d(jk.java:939) at com.ibm.db2.jcc.b.jk.getString(jk.java:917) at com.ibm.db2.jcc.b.jk.getString(jk.java:1369) at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getString(WSJdbcResultSet.java:1848) at tools.knowledgegate.db.access.InventorDataAccess.findBySerialNumberAndCountryCode(InventorDataAccess.java) at tools.knowledgegate.http.model.PIHSearchReportHttpActionListener.actionPerformed(PIHSearchReportHttpActionListener.java:66) at tools.knowledgegate.http.servlet.BrokerServlet.performTask(BrokerServlet.java:216) at tools.knowledgegate.http.servlet.BrokerServlet.doPost(BrokerServlet.java:83) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:966) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:463) at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3129) at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:238) at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:811) at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1433) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:93) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:394) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:274) at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:152) at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:213) at com.ibm.io.async.AbstractAsyncFuture.fireCompletionActions(AbstractAsyncFuture.java:195) at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:194) at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:741) at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:863) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1510) Caused by: sun.io.MalformedInputException at sun.io.ByteToCharUTF8.convert(ByteToCharUTF8.java:278) at com.ibm.db2.jcc.b.u.a(u.java:16) ... 34 more
2. The data type of the column is Varchar , size = 256 , nullable = Yes
3. I can reproduce the problem using below code System.out.println(recordset.getString("columname"));
Have you experience such case? I tried to use the getBytes method too and it seems like it doesn‘t work.
think and do something different, something has never been done and seen before..- Log in to reply.
-
sasami 11 Posts
0 people like this
Re: Caught java.io.CharConversionException. ERRORCODE=-4220, SQLSTATE=null
Nov 9, 2010
This is the accepted answer. This is the accepted answer.
Hi Allen,- allen.montejo
- Nov 8, 2010
1. below is the log trace I catch.
11/8/10 17:40:31:765 SGT 0000001d SystemErr R com.ibm.db2.jcc.b.SqlException: jcct4106512306http://3.50.152 Caught java.io.CharConversionException. See attached Throwable for details. ERRORCODE=-4220, SQLSTATE=null 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.wc.a(wc.java:55) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.wc.a(wc.java:111) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.bc.a(bc.java:1766) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.bc.n(bc.java:496) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.bc.F(bc.java:1263) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.jk.d(jk.java:939) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.jk.getString(jk.java:917) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.db2.jcc.b.jk.getString(jk.java:1369) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getString(WSJdbcResultSet.java:1848) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:966) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:463) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3129) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:238) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:811) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1433) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:93) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:394) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:274) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) 11/8/10 17:40:31:765 SGT 0000001d SystemErr R at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:152) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:213) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R at com.ibm.io.async.AbstractAsyncFuture.fireCompletionActions(AbstractAsyncFuture.java:195) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:194) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:741) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:863) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1510) 11/8/10 17:40:31:781 SGT 0000001d SystemErr R Caused by: java.nio.charset.MalformedInputException: Input length = 127 at com.ibm.db2.jcc.b.u.a(u.java:19) at com.ibm.db2.jcc.b.bc.a(bc.java:1762) at com.ibm.db2.jcc.b.bc.n(bc.java:496) at com.ibm.db2.jcc.b.bc.F(bc.java:1263) at com.ibm.db2.jcc.b.jk.d(jk.java:939) at com.ibm.db2.jcc.b.jk.getString(jk.java:917) at com.ibm.db2.jcc.b.jk.getString(jk.java:1369) at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getString(WSJdbcResultSet.java:1848) at tools.knowledgegate.db.access.InventorDataAccess.findBySerialNumberAndCountryCode(InventorDataAccess.java) at tools.knowledgegate.http.model.PIHSearchReportHttpActionListener.actionPerformed(PIHSearchReportHttpActionListener.java:66) at tools.knowledgegate.http.servlet.BrokerServlet.performTask(BrokerServlet.java:216) at tools.knowledgegate.http.servlet.BrokerServlet.doPost(BrokerServlet.java:83) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:966) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:463) at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3129) at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:238) at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:811) at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1433) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:93) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:394) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:274) at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:152) at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:213) at com.ibm.io.async.AbstractAsyncFuture.fireCompletionActions(AbstractAsyncFuture.java:195) at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:194) at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:741) at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:863) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1510) Caused by: sun.io.MalformedInputException at sun.io.ByteToCharUTF8.convert(ByteToCharUTF8.java:278) at com.ibm.db2.jcc.b.u.a(u.java:16) ... 34 more
2. The data type of the column is Varchar , size = 256 , nullable = Yes
3. I can reproduce the problem using below code System.out.println(recordset.getString("columname"));
Have you experience such case? I tried to use the getBytes method too and it seems like it doesn‘t work.
think and do something different, something has never been done and seen before.. More...
No. Unforturnatly I am not having any luck to recrete the problem.
You know you are using a very very old JDBC driver: 3.50.152. Do you have to use a such old driver? The current driver is at 3.62.
Anyway, I was thinking you may be able to get a trace like following so I can get more information about the problem: each line should starts with jcc, for example
jccTime:2010-11-08-21:13:38.031Thread:mainResultSet@7fc07fc getString (2) called jccTime:2010-11-08-21:13:38.046Thread:mainResultSet@7fc07fc getString () returned 2010-11-08 21:13:37 PR?CESS-1 2010-11-08 21:13:37.453
So, you see the special character: ? is okay. Best regards,
Sasami- Log in to reply.
-
allen.montejo 3 Posts
0 people like this
Re: Caught java.io.CharConversionException. ERRORCODE=-4220, SQLSTATE=null
Jan 8, 2011
This is the accepted answer. This is the accepted answer.
can you guide me where I could download the latest db2 jdbc driver? I will try to upgrade my local copy and I will try if that will fix the problem.- sasami
- Nov 9, 2010
No. Unforturnatly I am not having any luck to recrete the problem.
You know you are using a very very old JDBC driver: 3.50.152. Do you have to use a such old driver? The current driver is at 3.62.
Anyway, I was thinking you may be able to get a trace like following so I can get more information about the problem: each line should starts with jcc, for example
jccTime:2010-11-08-21:13:38.031Thread:mainResultSet@7fc07fc getString (2) called jccTime:2010-11-08-21:13:38.046Thread:mainResultSet@7fc07fc getString () returned 2010-11-08 21:13:37 PR?CESS-1 2010-11-08 21:13:37.453
So, you see the special character: ? is okay. Best regards,
Sasami More...- Log in to reply. &nb