【发布时间】: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。我将其更改为不提供敏感信息