使用java从另一个系统访问mysql数据库
我正在研究java swing中的一个接口。我们有一个与lan连接的四个系统。该接口用于从同一局域网中的另一个系统访问数据库我使用以下代码通过给出ip地址来访问数据库,数据库名称,表名但我无法连接其他系统数据库。我可以这样做吗?
public void dbconnection() { String name = ""; String port = "3306"; String user = "systech"; String pass = "systech"; String dbname = "cascade_demo"; String host="192.168.1.61"; try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://"+host+":"+ port + "/" + dbname; System.out.println("URL:" + url); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection(url, user, pass); String qry2 = "select * from item_master"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(qry2); while (rs.next()) { name = rs.getString(1); System.out.println("Name:" + name); } rs.close(); st.close(); con.close(); } catch (Exception e) { System.out.println("Exception:" + e); } }
使用下面的代码
public void dbconnection() { String name = ""; String port = "3306"; String user = "systech"; String pass = "systech"; String dbname = "cascade_demo"; String host="192.168.1.61"; try { String url = "jdbc:mysql://"+host+":"+ port + "/" + dbname; Class.forName("com.mysql.jdbc.Driver").newInstance (); Connection con = DriverManager.getConnection(url, user, pass); String qry2 = "select * from item_master"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(qry2); while (rs.next()) { System.out.println("Name:" + rs.getString(1)); } rs.close(); st.close(); con.close(); } catch (Exception e) { System.out.println("Exception:" + e); } }
另外,请确保包含用于连接的jar文件。 你会在这里得到jar文件。
更新1:
所以,你有一个
CommunicationsException: Communications link failure
我引用了这个答案 ,其中还包含一步一步的MySQL + JDBC教程:
如果您收到
SQLException: Connection refused
或Connection timed out
或MySQL特定的CommunicationsException: Communications link failure
,则表示根本无法访问数据库。 这可能有以下一个或多个原因:
- JDBC URL中的IP地址或主机名是错误的。
- 本地DNS服务器无法识别JDBC URL中的主机名。
- JDBC URL中的端口号丢失或错误。
- 数据库服务器已关闭。
- 数据库服务器不接受TCP / IP连接。
- 数据库服务器已用完连接。
- Java和DB之间的某些东西阻止了连接,例如防火墙或代理。
要解决这个问题,请遵循以下建议:
- 使用
ping
validation并测试它们。- 刷新DNS或使用JDBC URL中的IP地址。
- 根据MySQL DB的
my.cnf
进行validation。- 启动数据库。
- validationmysqld是否在没有
--skip-networking option
情况下启动。- 重新启动数据库并相应地修复代码,以便最终关闭连接。
- 禁用防火墙和/或配置防火墙/代理以允许/转发端口。
更新2
- 如果您的系统是Windows,请转到开始>>运行。
- 键入
command
。 这将打开命令提示符。 - 输入“ping 192.168.1.61”
- 您可能会收到以下格式的回复。
使用32个字节的数据对192.168.1.61 [192.168.1.61]进行Ping操作:
来自192.168.1.61的回复:bytes = 32 time = 101ms TTL = 124
如果你没有得到上述格式的东西,那么你的MYSQL服务器与ip 192.168.1.61是不可达到的。 请您的团队先启动服务器。 🙁
如果您有Linux版本,请打开终端并按照步骤3进行操作。
另请查看以下链接。 那些可能对你有帮助……
您应该下载jdbc驱动程序并替换
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
通过
Class.forName("com.mysql.jdbc.Driver");
如果您在更换Obdc后仍有问题,请发布例外。 还要检查防火墙设置和数据库权限。
如果您将获得exception,您的应用将无法释放系统资源。 这将更好地工作:
} finally { try { rs.close(); st.close(); con.close(); } catch( Exception e ) { e.printStackTrace(); } }