JAVA分页 时候 出现的问题 [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 1 (""): 数据类型 0x38 未知。
我的数据库是2008,连接是没问题的,我用同样的连接 成功连接到了 登录页面。有人说下载驱动,我也下载了,还是报错。代码如下javabean部分的代码:
package com.zte.search;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import com.zte.db.DB;public class search {
 private Connection conn;
     private  ResultSet rs=null;
public   ResultSet   executeQuery(String   sql) throws ClassNotFoundException   { 
 
try   { 
 conn=DB.getConn();//这个地方没问题, 具体代码写别的地方了,但是可以连接到数据库的!!!
 Statement st=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
     rs=st.executeQuery(sql); 

catch(SQLException   ex)   { 
System.err.println( "executeQuery:   "   +   ex.getMessage()); 

return rs;

}
分页代码
<jsp:useBean   id= "pageBean"   scope="page"  class= "com.zte.search.search"   /> 
 <%
ResultSet rs = null;
String strSQL = "";
int PageSize = 5;
int Page = 1;
int totalPage = 1;
int totalrecord = 0;
strSQL = "SELECT * FROM e_table";
String sql = "select count(*) from e_table"; 
try{
  
  
    rs = pageBean.executeQuery(sql); 
    if (rs.next()){  
       totalrecord = rs.getInt(1);   //算出总行数
       System.out.println(totalrecord);}
     
      
rs=pageBean.executeQuery(strSQL); 
       
    
if(totalrecord % PageSize ==0)// 如果是当前页码的整数倍
totalPage = totalrecord / PageSize; 
else    // 如果最后还空余一页
totalPage = (int) Math.floor( totalrecord / PageSize ) + 1; 
if(totalPage == 0) totalPage = 1;
if(request.getParameter("Page")==null || request.getParameter("Page").equals(""))
Page = 1;
else
try {
Page = Integer.parseInt(request.getParameter("Page"));
}
    catch(java.lang.NumberFormatException e){
// 捕获用户从浏览器地址拦直接输入Page=sdfsdfsdf所造成的异常
Page = 1;
}
if(Page < 1)  Page = 1;
if(Page > totalPage) Page = totalPage;
rs.absolute((Page-1) * PageSize + 1);
   
out.print("<TABLE BORDER='1' width='500' height='400'>");
out.print("<tr><td> 文章</td><td>作者  </td><td>地点 </td><td>时间 况</td></tr>");
for(int iPage=1; iPage<=PageSize; iPage++)
{
out.print("<TR><TD>"+rs.getString(1)+"</TD>");
out.print("<TD>"+rs.getString(2)+"</TD>");
out.print("<TD>"+rs.getString(3)+"</TD>");
out.print("<TD>"+rs.getString(4)+"</TD></TR>");
if(!rs.next()) break;
}
out.print("</TABLE>");

catch(SQLException e){
    System.out.println("错误! ");
System.out.println(e.getMessage());
}
%>
  <FORM Action="java.jsp" Method="GET">
<% 
   if(Page != 1) {
      out.print("   <A HREF=java.jsp?Page=1>第一页</A>");
      out.print("   <A HREF=java.jsp?Page= " + (Page-1) + ">上一页</A>");
   }
   if(Page != totalPage) {
      out.print("   <A HREF=java.jsp?Page=" + (Page+1) + ">下一页</A>");
      out.print("   <A HREF=java.jsp?Page=" + totalPage + ">最后一页</A>");
   }
%>
<br><br><br><br><br><br><br><br><BR>输入页数:<input TYPE="TEXT" Name="Page" SIZE="3"> 
页数:<font COLOR="Red"><%=Page%>/<%=totalPage%></font> 
</FORM>

解决方案 »

  1.   

     [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 1 (""): 数据类型 0x38 未知。我的数据库是2008,连接是没问题的
    同学,你的数据库是 2008 的,你用 2000的JDBC驱动去连接,还说没问题这不是要坑人么?
    能连接上数据库只能说明身份认证部分的协议可能还没变,但绝对不代表能执行SQL语句等操作。
    另外,MS SQL Server 在2005以后,连接URL的写法和JDBC驱动的类已经发生大变更,请注意调整。