【问题标题】:Java SQL expected 6 bytes and received 0 errorJava SQL 预期 6 个字节并收到 0 个错误
【发布时间】:2016-08-03 21:36:54
【问题描述】:

我收到此错误:“从网络读取数据时数据不足 - 至少需要 6 个字节,但只收到 0 个字节。连接已终止。”当我尝试连接到我的数据库时。我似乎找不到任何有效的解决方案。你们能帮我一把吗?

    import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class RetrieveData 
{
    private String zone;
    private String date;
    private String userName = "User";
    private String password = "Password";
    private String serverAdress= "jdbc:derby://Server:1010/Database";
    private Connection con = null;  
    private Statement stmt = null;  
    private ResultSet rs = null; 
    RetrieveData(String zoneToPull, String dayToPull)
    {
        zone = zoneToPull;
        date = dayToPull;
    }

    public int HistoryActual()
    {
        try 
        {
            Class.forName("org.apache.derby.jdbc.ClientDriver");
            con = DriverManager.getConnection(serverAdress, userName, password);
            String sql = "SELECT TOP 10 " +
                                "*" +
                            "FROM" +
                                "walks" +
                            "WHERE"+
                                "company_id = 'TMS3'";
            stmt = con.createStatement();
            rs = stmt.executeQuery(sql);
            while (rs.next()) 
            {  
                System.out.println(rs.getString(4) + " " + rs.getString(6));  
            }
        } 
        catch (SQLException e)
        {
            System.out.println(e.getMessage());
        }
        finally 
        {  
            if (rs != null) try { rs.close(); } catch(Exception e) {}  
            if (stmt != null) try { stmt.close(); } catch(Exception e) {}  
            if (con != null) try { con.close(); } catch(Exception e) {}  
        } 
        return 0;
    }
}

这是堆栈跟踪:

java.sql.SQLNonTransientConnectionException:从网络读取时数据不足 - 预计最少 6 个字节,但仅收到 0 个字节。连接已终止。 在 org.apache.derby.client.am.SQLExceptionFactory.getSQLException(未知来源) 在 org.apache.derby.client.am.SqlException.getSQLException(未知来源) 在 org.apache.derby.jdbc.ClientDriver.connect(未知来源) 在 java.sql.DriverManager.getConnection(未知来源) 在 java.sql.DriverManager.getConnection(未知来源) 在 RetrieveData.HistoryActual(RetrieveData.java:27) 在 BookToGoals.(BookToGoals.java:34) 在 Console.Console(Console.java:96) 在 Console.access$0(Console.java:47) 在 Console$1.run(Console.java:43) 在 java.awt.event.InvocationEvent.dispatch(未知来源) 在 java.awt.EventQueue.dispatchEventImpl(未知来源) 在 java.awt.EventQueue.access$500(未知来源) 在 java.awt.EventQueue$3.run(未知来源) 在 java.awt.EventQueue$3.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(未知来源) 在 java.awt.EventQueue.dispatchEvent(未知来源) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForFilter(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.run(未知来源) 原因:错误 08006:从网络读取时数据不足 - 预计至少 6 个字节,但仅收到 0 个字节。连接已终止。 在 org.apache.derby.client.net.Reply.fill(未知来源) 在 org.apache.derby.client.net.Reply.ensureALayerDataInBuffer(未知来源) 在 org.apache.derby.client.net.Reply.readDssHeader(未知来源) 在 org.apache.derby.client.net.Reply.startSameIdChainParse(未知来源) 在 org.apache.derby.client.net.NetConnectionReply.readExchangeServerAttributes(未知来源) 在 org.apache.derby.client.net.NetConnection.readServerAttributesAndKeyExchange(未知来源) 在 org.apache.derby.client.net.NetConnection.flowServerAttributesAndKeyExchange(未知来源) 在 org.apache.derby.client.net.NetConnection.flowUSRIDPWDconnect(未知来源) 在 org.apache.derby.client.net.NetConnection.flowConnect(未知来源) 在 org.apache.derby.client.net.NetConnection.(未知来源) 在 org.apache.derby.client.net.ClientJDBCObjectFactoryImpl.newNetConnection(未知来源) ... 22 更多

【问题讨论】:

  • 您能否在问题中添加堆栈跟踪?
  • 还描述您的 derby 数据库是如何设置的。这是您正在使用的基于进程中文件的数据库,还是真的有一个单独的进程在运行 derby 数据库?
  • 数据库在单独的服务器上运行。它的主要用途是与另一个程序一起使用。我只是想从中提取数据。
  • 您的数据库主机名、用户名和密码都正确吗?查看您的代码,您似乎从一些参考资料中复制了它,忘记替换实际的用户名、密码和主机名(代替服务器)
  • 是的,它是正确的。如果我改变任何东西,我会得到 unkownHostException。我将其更改为不提供敏感信息

标签: java sql jdbc derby


【解决方案1】:

看起来我发现了发生了什么。这是由于我自己的困惑。我正在尝试连接到 Microsoft SQL 数据库。因此我需要 sqljdbc 驱动程序而不是 derby。这解决了我的问题。谢谢你们的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 2019-11-17
    • 2021-03-13
    • 2018-11-18
    • 1970-01-01
    • 2019-08-02
    • 2019-01-11
    相关资源
    最近更新 更多