<%@page contentType="text/html; charset=GBK"%>
<%@page import="java.sql.*,java.io.*"%>
<html>
<head>
<title>jsp5</title>
</head>
<body bgcolor="#ffffff">
<%
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url = "jdbc:microsoft:sqlserver://localhost:1433;DataBaseName=master";
String user = "daryl715";
String password = "daryltl310";
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from student");
byte[] buff1=new byte[4096];
byte[] buff2=new byte[4096];
while(rs.next()){
InputStream fin1=rs.getAsciiStream(1);
InputStream fin2=rs.getBinaryStream(1);
for(;;){
int size1=fin1.read(buff1);
int size2=fin2.read(buff2);
if(size1==-1){break;}
if(size2==-1){break;}
}
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>爆出java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unsupported data conversion. at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source) at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source) at com.microsoft.jdbc.base.BaseData.unsupportedConversion(Unknown Source) at com.microsoft.jdbc.base.BaseData.getBinaryStream(Unknown Source) at com.microsoft.jdbc.base.BaseResultSet.getBinaryStream(Unknown Source) at org.apache.jsp.jsp5_jsp._jspService(org.apache.jsp.jsp5_jsp:65) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:731) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595)异常,是什么引起”不支持的数据转换“呢
我用的时SQL Server JDBC Driver
<%@page import="java.sql.*,java.io.*"%>
<html>
<head>
<title>jsp5</title>
</head>
<body bgcolor="#ffffff">
<%
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url = "jdbc:microsoft:sqlserver://localhost:1433;DataBaseName=master";
String user = "daryl715";
String password = "daryltl310";
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from student");
byte[] buff1=new byte[4096];
byte[] buff2=new byte[4096];
while(rs.next()){
InputStream fin1=rs.getAsciiStream(1);
InputStream fin2=rs.getBinaryStream(1);
for(;;){
int size1=fin1.read(buff1);
int size2=fin2.read(buff2);
if(size1==-1){break;}
if(size2==-1){break;}
}
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>爆出java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unsupported data conversion. at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source) at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source) at com.microsoft.jdbc.base.BaseData.unsupportedConversion(Unknown Source) at com.microsoft.jdbc.base.BaseData.getBinaryStream(Unknown Source) at com.microsoft.jdbc.base.BaseResultSet.getBinaryStream(Unknown Source) at org.apache.jsp.jsp5_jsp._jspService(org.apache.jsp.jsp5_jsp:65) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:731) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595)异常,是什么引起”不支持的数据转换“呢
我用的时SQL Server JDBC Driver
InputStream fin2=rs.getBinaryStream(1);
为什么要这么用呢?
是为了实现getAsciiStream(1)和getBinaryStream(1)两种读取模式而已
to wu_bjcn(咖啡的味道)
请说出你的看法,我没觉得有什么怪异的
我记得数据库网络传输都是按照一定的编码格式,比如ISO-8859-1
ResultSet已经是非常高层的API,你一定要他按照二进制格式来传,也许就会报错。不用这样写也可以的嘛