JDBC-ODBC Bridge连接mysql的问题~

jumpcolor 2005-03-09 07:13:05
我是用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)

我现在真是很无奈,请各位大虾指教!
...全文
431 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
minghui000 2005-03-30
  • 打赏
  • 举报
回复
up
jumpcolor 2005-03-11
  • 打赏
  • 举报
回复
up
SkyWinGo 2005-03-11
  • 打赏
  • 举报
回复
再付上一篇Jsp用JDBC驱动连接MySQL数据库
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
SkyWinGo 2005-03-11
  • 打赏
  • 举报
回复
转篇文章:
JDBC-ODBC桥
1.JDBC-ODBC桥的概念

JDBC-ODBC桥是一个JDBC驱动程序,它通过将JDBC操作转换为ODBC操作来实现JDBC操作。对ODBC,它像是通常的应用程序,桥为所有对ODBC可用的数据库实现JDBC。它作为sun.jdbc.odbc包实现,其中包含一个用来访问ODBC的本地库。桥是由Intersolv和Java Soft联合开发的。由于ODBC被广泛地使用,该桥的优点是让JDBC能够访问几乎所有的数据库。桥支持ODBC 2.x,这是当前大多数据ODBC驱动程序支持的版本。桥作为包sun.jdbc.odbc与JDK一起自动动安装,无需特殊配置。

建议尽可能地使用纯Java JDBC驱动程序代替桥和ODBC驱动程序,这可以完全省去了ODBC所需的客户机配置,也免除了Java虚拟机被桥引入的本地代码(即桥本地库、ODBC驱动程序管理器库、ODBC驱动程序库和数据库客户机库)中的错误所破坏的可能性。

2.使用JDBC-ODBC桥

通过ODBC子协议,使用URL打开JDBC连接即可使用桥。建立连接前,必须将桥驱动程序类sun.jdbc.odbc.JdbcOdbcDriver添加到名为jdbc.drivers的java.lang.System属性中,或用Java类加载器将其显式地加载。可以用以一下行进行桥的显式加载:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

加载时,ODBC驱动程序(与所有JDBC驱动程序一样)将创建它自己的实例,同时在JDBC驱动程序管理器进行注册。

3.JDBC-ODBC桥支持的JDBC URL

桥驱动程序使用ODBC子协议。该子协议的URL为以下的形式:

jdbc:odbc:<data-source-name>[<attribute-name>=<attribute-value>]*

例如:

jdbc:odbc:sybase

jdbc:odbc:mydb;UID=me;PWD=secret

jdbc:odbc:ora123;Cachesize=300
shenhai800 2005-03-10
  • 打赏
  • 举报
回复
mysql加个密码。
YuLimin 2005-03-10
  • 打赏
  • 举报
回复
直接用MM JDBC(www.mysql.com)驱动连接到MySQL去吧,不要用JDBC-ODBC桥的方式了。。。
「已注销」 2005-03-10
  • 打赏
  • 举报
回复
UPING......
yeshucheng 2005-03-10
  • 打赏
  • 举报
回复
public class DataDS {
private static DataDS dataDS = null;
private DataSource ds = null;
private Connection conn = null;

private DataDS ()throws DataException {
try {
Context ctx = null;
ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:/dataDS");
} catch (Exception e) {
throw new GFYLException(e.toString());

}
}

public synchronized static DataDS getInstance()
throws DataException {

if (dataDS == null) {
dataDS = new DataDS ();
}
return dataDS ;
}

public Connection getConnection() throws SQLException {
return ds.getConnection();
}
}
//上面是个连接数据源的bean
接下来就是你要针对你的数据源老配置了
RogerNina 2005-03-10
  • 打赏
  • 举报
回复
你用的是JDBC-ODBC地连接驱动,我觉得应该在Windows里设置一下系统DNS
你为什么不直接用JDBC for MySQL的呢?
那样,就省事多了
wei4uxp 2005-03-10
  • 打赏
  • 举报
回复
新手,也不太清楚,跟着一起听高手讲课
jumpcolor 2005-03-10
  • 打赏
  • 举报
回复
大家都在说驱动程序,有可以详细说说的么?我还是不明白!
wcmj 2005-03-10
  • 打赏
  • 举报
回复
驱动程序
wuzhu888 2005-03-10
  • 打赏
  • 举报
回复
你把驱动导入并考进去了吗??
elfbobo 2005-03-10
  • 打赏
  • 举报
回复
uping...................
jumpcolor 2005-03-10
  • 打赏
  • 举报
回复
to:YuLimin

我只是想搞明白这个问题处在什么地方!清继续支持~

to: shenhai800

请问怎么给mysql加密码呀?在odbc设置的地方价格密码好像没什么用!在mysql安装向导里加的也没什么反映
jumpcolor 2005-03-09
  • 打赏
  • 举报
回复
连接mysql的jdbc驱动?

我不知道说的是哪个?不久是mysql odbc 3.51 driver么?还需要什么别的驱动么?
jumpcolor 2005-03-09
  • 打赏
  • 举报
回复
自己先顶一下吧,问题看着好像很长的样子,其实是个小问题~
RockyGo 2005-03-09
  • 打赏
  • 举报
回复
你有没有装连接mysql的jdbc驱动

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧