[英]Connecting Mysql database with Java
-代碼已更新-
我正在嘗試使用JDBC連接MySQL數據庫,但無法使連接正常工作。 我不確定我構造連接字符串的方式是否正確。 這是代碼和錯誤:
碼:
Connection conn;
String userName = "root";
String serverName = "127.0.0.1";
String portNumber = "3306";
String password = "password";
String dbName = "myDB";
/**
* Establishes connection with the sql database
* @throws SQLException
*/
public SQLConnector() throws SQLException {
setConnection();
}
private void setConnection() throws SQLException {
Properties connectionProps = new Properties();
connectionProps.put("user", this.userName);
connectionProps.put("password", this.password);
String connectionString = "jdbc:mysql://" + this.serverName
+ ":" + this.portNumber + "/" + this.dbName;
System.out.println(connectionString);
this.conn = DriverManager.getConnection(connectionString, connectionProps);
}
錯誤:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1036)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:627)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1013)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2234)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.source.database.SQLConnector.setConnection(SQLConnector.java:69)
at com.source.database.SQLConnector.<init>(SQLConnector.java:25)
at com.source.main.Start.main(Start.java:13)
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2914)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:559)
... 18 more
我確實嘗試過將MySQL與Java連接起來。 這是我的方法。
private Connection getConnection() throws SQLException
{
Connection conn = null;
Properties connectionProps = new Properties();
connectionProps.put("user", this.userName);
connectionProps.put("password", this.password);
conn = DriverManager.getConnection("jdbc:mysql://"
+ this.serverName + ":" + this.portNumber + "/" + this.dbName,
connectionProps);
return conn;
}
public boolean executeUpdate(Connection connection, String command) throws SQLException
{
try
{
Statement st = connection.createStatement();
st.executeUpdate(command);
connection.close();
}
catch (Exception e)
{
System.err.println("Got an exception!");
e.printStackTrace();
}
return false;
}
executeUpdate
用於更新,插入和從表中刪除。 希望能有所幫助。
哦,而且JDBC驅動程序也必須位於程序路徑中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.