JDBC-ODBC Bridge连接mysql的问题~
我是用JDBC-ODBC Bridge连接的数据库,数据库用的是mysql4.1,odbc驱动用的是mysql odbc 3.51 driver,已经建立了一个库yyy,库中有一个表qinshi,标的结构为qinshi(name char(20),age int,dorm char(20));并且已经有数据,也在odbc中注册了,但是在连接的时候总会出现问题,相关代码如下!
import java.sql.*;
public class test
{
static {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("success loading JDBC-ODBC Bridge Driver...");
}catch(Exception e){
System.out.println("Error loading JDBC-ODBC Bridge Driver...");
e.printStackTrace();
}
}
public static void main(String args[]){
try{
Connection con1=DriverManager.getConnection("jdbc:odbc:yyy","root","");//**数据库没有密码,odbc设置处也没有设置密码**
System.out.println("Success eastablishing the Connection...");
Statement stm1=con1.createStatement();
ResultSet rt=stm1.executeQuery("select * from qinshi where dorm='7412';");
System.out.println("Success selest database...");
System.out.println("Result of selest database is...");
while(rt.next())
{
String a=rt.getString(2);
int b=rt.getInt(3);
String c=rt.getString(4);
System.out.println(a+" "+b+" "+c);
}
con1.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
在建立连接的时候,总会出现这样的异常
C:\javawork>java test
success loading JDBC-ODBC Bridge Driver...
java.sql.SQLException: [MySQL][ODBC 3.51 Driver]Access denied for user 'root'@'l
ocalhost' (using password: NO)
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3074)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:3
23)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at test.main(test.java:15)
如果用access的时候,就可以没有什么问题,我想了挺长时间也没有解决:既然程序能够正常编译,并能够在access下正常运行,说明程序本身并没有什么问题;如果在mysql的命令行下执行相关的查询时,也能正常查询,说明数据库也是好的;odbc设置也不应该有什么错误的。
如果在odbc设置处给用户名root加上密码(例如111),并在程序做标记的地方作相应的改动的话Connection con1=DriverManager.getConnection("jdbc:odbc:yyy","root","111");则会出现这样的提示:
C:\javawork>java test
success loading JDBC-ODBC Bridge Driver...
java.sql.SQLException: [MySQL][ODBC 3.51 Driver]Client does not support authenti
cation protocol requested by server; consider upgrading MySQL client
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3074)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:3
23)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at test.main(test.java:15)
我现在真是很无奈,请各位大虾指教!