我终于能够通过连接到MYSQL数据库的控制台和记事本创建一个简单的java程序。但是当我使用
访问数据库时conn = DriverManager.getConnection(DB_URL,USER,PASS);
stmt = conn.createStatement();
我的代码只是在它停止执行之前一直运行1或2分钟输出大量信息(我注意到某种痕迹)。
这是我的代码:
public class Database1{
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/emp?connectTimeout=3000";
static final String USER = "root";
static final String PASS = "admin";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs=null;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch(Exception e){
System.out.println("Unable to connect!!");
}
System.out.println("Connecting to database...");
try{
conn = DriverManager.getConnection(DB_URL,USER,PASS);
} catch(Exception e){
System.out.println("Unable to access Database!!");
}
System.out.println("Creating statement...");
try{
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM Employees");
}catch(Exception e){
System.out.println("Unable to access Database!!");
}
System.out.println("ID NAME ");
}
}
以下是我得到的输出(我只能复制屏幕末尾的详细信息):
..............ql.jdbc.ByteArrayBuffer.getCapacity(..) returning 16384
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- MysqlIO.java:2357 com.mysql.jdbc.
MysqlIO.reclaimLargeReusablePacket(..) returning null
Thu Jun 05 12:28:53 IST 2014 TRACE: --> ResultSet.java:6643 com.mysql.jdbc
.ResultSet.toString()
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- ResultSet.java:6643 com.mysql.jdb
c.ResultSet.toString(..) returning "com.mysql.jdbc.ResultSet@546ccad7"
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- MysqlIO.java:1411 com.mysql.jdbc.M
ysqlIO.readAllResults(..) returning com.mysql.jdbc.ResultSet@546ccad7
Thu Jun 05 12:28:53 IST 2014 TRACE: --> ResultSet.java:6643 com.mysql.jdbc.
ResultSet.toString()
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- ResultSet.java:6643 com.mysql.jdbc
.ResultSet.toString(..) returning "com.mysql.jdbc.ResultSet@546ccad7"
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- MysqlIO.java:1634 com.mysql.jdbc.My
sqlIO.sqlQueryDirect(..) returning com.mysql.jdbc.ResultSet@546ccad7
Thu Jun 05 12:28:53 IST 2014 TRACE: --> ConnectionProperties.java:1901 com.m
ysql.jdbc.ConnectionProperties.getMaintainTimeStats()
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- ConnectionProperties.java:1901 com.
mysql.jdbc.ConnectionProperties.getMaintainTimeStats(..) returning true
Thu Jun 05 12:28:53 IST 2014 TRACE: --> ConnectionProperties.java:1809 com.m
ysql.jdbc.ConnectionProperties.getGatherPerformanceMetrics()
Thu Jun 05 12:28:53 IST 2014 TRACE: --> ConnectionProperties.java:83 com.my
sql.jdbc.ConnectionProperties$BooleanConnectionProperty.getValueAsBoolean()
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- ConnectionProperties.java:83 com.m
ysql.jdbc.ConnectionProperties$BooleanConnectionProperty.getValueAsBoolean(..) r
eturning false
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- ConnectionProperties.java:1809 com.
mysql.jdbc.ConnectionProperties.getGatherPerformanceMetrics(..) returning false
Thu Jun 05 12:28:53 IST 2014 TRACE: --> ResultSet.java:6643 com.mysql.jdbc.R
esultSet.toString()
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- ResultSet.java:6643 com.mysql.jdbc.
ResultSet.toString(..) returning "com.mysql.jdbc.ResultSet@546ccad7"
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- Connection.java:2964 com.mysql.jdbc.
Connection.execSQL(..) returning com.mysql.jdbc.ResultSet@546ccad7
Thu Jun 05 12:28:53 IST 2014 TRACE: --> ResultSet.java:6643 com.mysql.jdbc.Re
sultSet.toString()
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- ResultSet.java:6643 com.mysql.jdbc.R
esultSet.toString(..) returning "com.mysql.jdbc.ResultSet@546ccad7"
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- Connection.java:2949 com.mysql.jdbc.C
onnection.execSQL(..) returning com.mysql.jdbc.ResultSet@546ccad7
Thu Jun 05 12:28:53 IST 2014 TRACE: --> ResultSet.java:5634 com.mysql.jdbc.Res
ultSet.getUpdateID()
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- ResultSet.java:5634 com.mysql.jdbc.Re
sultSet.getUpdateID(..) returning -1
Thu Jun 05 12:28:53 IST 2014 TRACE: --> ConnectionProperties.java:1638 com.mys
ql.jdbc.ConnectionProperties.getCacheResultSetMetadata()
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- ConnectionProperties.java:1638 com.my
sql.jdbc.ConnectionProperties.getCacheResultSetMetadata(..) returning false
Thu Jun 05 12:28:53 IST 2014 TRACE: --> ResultSet.java:6643 com.mysql.jdbc.Res
ultSet.toString()
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- ResultSet.java:6643 com.mysql.jdbc.Re
sultSet.toString(..) returning "com.mysql.jdbc.ResultSet@546ccad7"
Thu Jun 05 12:28:53 IST 2014 TRACE: <-- Statement.java:868 com.mysql.jdbc.Stat
ement.executeQuery(..) returning com.mysql.jdbc.ResultSet@546ccad7
ID NAME
C:\JavaP>
这里的任何人都可以帮助我理解输出的全部内容以及如何控制它...
答案 0 :(得分:0)
正如我在Dropbox的代码中看到的那样,你使用的是PostgreSQL数据库 - 而不是你问题中提到的MySQL数据库!这有所不同。
查看http://jdbc.postgresql.org/development/privateapi/org/postgresql/Driver.html
这是您使用的驱动程序的文档。此驱动程序具有记录器和特定日志级别(在您的情况下为trace
)。您可以设置日志级别甚至记录器。
org.postgresql.Driver.setLogLevel(java.util.logging.Level.INFO);
您的代码和输出看起来很好。那么,您不会关闭连接和语句,但除此之外,它似乎有效。
你建立了一个连接,你创建了一个声明,就像我看到的那样,没有例外。最后你提出了一个查询,但你对结果一无所知。这就是为什么你什么都没看到的原因。然后你的程序结束并停止(因为代码完成)。
但是,我建议您稍微更改一下代码。您可以简单地记下所有可能的异常
catch(Exception e){
System.out.println("Unable to access Database!!");
}
如果你这样做,你永远不会知道出了什么问题。相反,打印异常,它是唯一可以告诉你发生了什么的信息:
catch(Exception e){
System.out.println("Unable to access Database!!");
e.printStackTrace();
}
现在你应该只考虑,如果你的程序可以继续发生这种异常。例如。如果你无法连接到你的数据库,继续是没用的。不起作用!在这种情况下,最好离开(或处理异常):
catch(Exception e){
System.out.println("Unable to access Database!!");
e.printStackTrace();
return;
}
最后但并非最不重要的是,您需要使用查询结果来查看内容:
rs = stmt.executeQuery("SELECT * FROM Employees");
while (rs.next()) {
// get your stuff
}
答案 1 :(得分:0)
public class DBConnect {
Statement st;
ResultSet rs;
public DBConnect() {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/db_name", "root", "root");
st = con.createStatement();
} catch (Exception e) {
}
}
public ResultSet readData(String s) {
try {
System.out.println("SQL : : : " + s);
rs = st.executeQuery(s);
} catch (Exception e) {
}
return rs;
}
public int putData(String s) {
int i = 0;
try {
System.out.println("SQL : : : " + s);
i = st.executeUpdate(s);
} catch (Exception e) {}
return i;
}
}