Topic: Linux下java连接mysql数据库问题

  Print this page

1.Linux下java连接mysql数据库问题 Copy to clipboard
Posted by: ghostvic
Posted on: 2008-01-10 00:00

小弟写了一个用java连接mysql的试验程序,在A机器(RH linux)上能正确运行,在B机器(windows)也能正确运行,但是到了我的机器C上( RH linux)却总出异常。

哪位大哥帮忙给解答一下,谢谢。

源代码:

import java.sql.*;

public class OpenDB {
String userName = "user";

String userPassword = "pass";

private String driverName = "org.gjt.mm.mysql.Driver";

private String url = "jdbc:mysql://210.29.134.131/USER";

Connection dbConn;

public Connection getConnection() {
try {
Class.forName(driverName);
dbConn = DriverManager.getConnection(url, userName, userPassword);
} catch (Exception ex) {
ex.printStackTrace();
System.out.println("Cannot connect to Database";
}
return dbConn;
}

public Statement getState() {
Statement stmt = null;
try {
stmt = this.getConnection().createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
return stmt;
}

public int executeInsert(String strSql){
Statement stmt = this.getState();
try {
return stmt.executeUpdate(strSql);
} catch (SQLException e) {
System.out.println("Cannot execute Sql command: "+strSql);
}
return 0;
}

public ResultSet executeQuery(String strSql){
Statement stmt = this.getState();
try{
return stmt.executeQuery(strSql);
}catch (SQLException e){
System.out.println("Cannot execute Sql command: "+strSql);
}
return null;
}

public static void main(String[] args) {
OpenDB db = new OpenDB();

ResultSet rs = db.executeQuery("select * from user";
try {
while (rs.next()) System.out.println(rs.getString("DNS");
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
===================================================
异常为:
at java.lang.Class.initializeClass (libgcj.so.7)
at com.mysql.jdbc.NonRegisteringDriver.parseURL (NonRegisteringDriver.java:436)
at com.mysql.jdbc.NonRegisteringDriver.acceptsURL (NonRegisteringDriver.java:210)
at java.sql.DriverManager.getDriver (libgcj.so.7)
at java.sql.DriverManager.getConnection (libgcj.so.7)
at java.sql.DriverManager.getConnection (libgcj.so.7)
at OpenDB.getConnection (OpenDB.java:19)
at OpenDB.getState (OpenDB.java:30)
at OpenDB.executeQuery (OpenDB.java:4
at OpenDB.main (OpenDB.java:61)
Caused by: java.io.CharConversionException
at gnu.gcj.convert.Input_iconv.read (libgcj.so.7)
at java.lang.String.init (libgcj.so.7)
at java.lang.String.<init> (libgcj.so.7)
at com.mysql.jdbc.StringUtils.<clinit> (StringUtils.java:66)
at java.lang.Class.initializeClass (libgcj.so.7)
...9 more

====================================================
有以下几个条件:
1。A,C 在一个局域网,
2。数据库装在A上
3。A,C两个机器的mysql驱动都一样
4. 用C连接其他数据库也不行,出一样的异常。
5。A,C的classpath均为: /usr/java/jdk1.5.0_04/jre/lib/rt.jar:.:/etc/java/lib/mysql-connector-java-3.1.11-bin.jar
6。C上面跑其他的java程序正常

2.Re:Linux下java连接mysql数据库问题 [Re: ghostvic] Copy to clipboard
Posted by: JiafanZhou
Posted on: 2008-01-16 22:11

My first guess is to test if your computer C can connect to your computer A, using the IP Address you provided in the code.

run a ping utility to test if you can connect to A.

My second guess is that your computer A might have some network restriction for other LAN computers to connect to your database. By default, linux Redhat has some firewalls blocking the HTTP connection from other computers, prove that it is the case and then try to search some topic on the google.

Looking at your exception below:
at com.mysql.jdbc.NonRegisteringDriver.parseURL (NonRegisteringDriver.java:436)

Let me know if you still have the same problem.

Regards,
Jiafan


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923