java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配

今天把sql server 2008 r2装了起来,64位的,然后就迫不及待地体验连接数据库的操作,编程语言是java。我一开始学了一种非常老的连接方式,使用JDBC-ODBC桥。初次使用不太熟练,所以这里把详细步骤记下来。

首先是配置ODBC数据源,打开控制面板,小图标方式查看,我看到有个

这个图标是好像是32位ODBC的标志,我点击启动了它,启动的却是64位的ODBC管理工具,

我在“用户DSN”面板下点击了“添加”按钮,弹出“创建新数据源”窗口,

我双击“SQL Server”,弹出下面这个窗口

我在“名称”一栏里填上“hp4”,在“服务器”一栏里填上“(local)”(服务器一栏可以从下拉菜单选择的,下拉列表里为空时可以填“(local)”或计算机名,计算机名可以在计算机属性里看到),然后下一步

来到下面这个窗口,选择“使用用户输入登录ID……”,登录名填“sa”,密码填写sa账户的密码,下一步

一直下一步到完成,弹出配置信息,可以测试下数据源

到这里为止,数据源配置完成了。

接下来启动Myeclipse,新建web project,给index.jsp添加sql包引用,pageEncoding设置成“utf-8”

在body里面添加如下代码:

<%

  try{

  Connection Con;

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

  Con = DriverManager.getConnection("jdbc:odbc:hp4","sa","123456");

  System.out.println("Step1 goes well");

  }

  catch(Exception e){

  System.out.println("Step1 down");

  e.printStackTrace();

  }

%>

 

在MyEclipse内置浏览器中访问上面的页面,控制台输出“Step1 goes well”,表示连接成功。

JDBC-ODBC桥内置在JDK中,所以不需要另外添加驱动包,上面的代码意思是连接成功就在控制台输出“Step1 goes well”,连接出错就在控制台输出“Step1 down”。

 

创建数据源的过程我还存在很多疑问。

首先是启动ODBC管理器时应该启动32位还是64位?

在控制面板中点击 “管理工具”,会看到有两个ODBC管理器,

我在这次演示中启动的是64位,

 

然后就是应该在“用户DSN”面板下还是在“系统DSN”面板下新建数据源?

我之前在“系统DSN”面板下创建了两个数据源,连接时都报错了,错误信息是

 

java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配

 

我百度这个错误,网上说是因为32位和64位的问题,64位系统应该建立64位DSN,但我在系统DSN下建立的DSN确实是64位的,如下图,连接下面两个DSN都会报上面那个错误。

我在用户DSN面板下创建的DSN貌似是32位和64位都支持的,如下图的hp2、hp3、hp4

暂时没有其它问题了。上面两个问题懒得探讨了,很简单的控制变量法就能检查出来。

posted @ 2015-06-26 22:51  Levice  阅读(10091)  评论(2编辑  收藏  举报