首页 新闻 会员 周边 捐助

java中jdbc桥连odbc报错

0
悬赏园豆:30 [已解决问题] 解决于 2014-12-10 13:12

源代码:

  

import java.sql.*;
public class Test1 {

    public static void main(String[] args)   {
        // TODO Auto-generated method stub
        Connection ct=null;
        Statement sm=null;
        try {
            //加载驱动(把需要的驱动加入内存)
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

            //得到连接(指定连接到哪个数据源)
            ct=DriverManager.getConnection("jdbc:odbc:mytest");
            
            //statement主要用于发送sql语句
            sm=ct.createStatement();
            //执行(crud)
            //添加一条数据到dept表中
            int i=sm.executeUpdate("insert into dept values('50','security','beijing')");
            if(i==1)
            {
                System.out.println("insert success");            
            }
            else
            {
                System.out.println("insert erro");
            }
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
            
            finally{
                //关闭资源
                try {
                    if(sm!=null)
                    {
                    sm.close();
                    }
                    if(ct!=null){
                    ct.close();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        
    }

}

编译结果:
java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.initialize(JdbcOdbcDriver.java:453)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:153)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Test1.main(Test1.java:13)

 

数据源:

需要说明的是,我的sql语句在数据库中测试正常,且数据源测试通过,看这编译是说我的路径为空。。。。求解啊

问题补充:

莲藕排骨汤的主页 莲藕排骨汤 | 初学一级 | 园豆:30
提问于:2014-12-09 17:00
< >
分享
最佳答案
0

贴出数据源的 配置图,里面是否写了本地的路径,程序在不同的地方跑的

收获园豆:30
风醉 | 小虾三级 |园豆:1197 | 2014-12-09 17:08

不知道你是要看哪一张?

莲藕排骨汤 | 园豆:30 (初学一级) | 2014-12-09 17:12

@莲藕排骨汤: 带数据库连接信息的

风醉 | 园豆:1197 (小虾三级) | 2014-12-09 17:14

@风醉: 已上图

莲藕排骨汤 | 园豆:30 (初学一级) | 2014-12-09 17:18

@莲藕排骨汤: 你用的是. ,代表本地,你的程序也是在你的机器上 跑的嘛?

风醉 | 园豆:1197 (小虾三级) | 2014-12-09 17:20

@风醉: 是的

莲藕排骨汤 | 园豆:30 (初学一级) | 2014-12-09 17:22

@莲藕排骨汤: 打断点调试吧,看是 odbc连接那就报错,还是执行SQL的时候报错

前者就重连一次ODBC,注意按标准的来

后者就是你连接的数据库里面没那个表,选错了数据库的可能性大点

风醉 | 园豆:1197 (小虾三级) | 2014-12-09 17:27

@风醉: 调试运行直接被catch,

ct=DriverManager.getConnection("jdbc:odbc:mytest");

就是这句报错

数据库的话没有选错

莲藕排骨汤 | 园豆:30 (初学一级) | 2014-12-09 18:11

@风醉: 数据库那里已补充

莲藕排骨汤 | 园豆:30 (初学一级) | 2014-12-09 18:16

@莲藕排骨汤: 那就很明显是数据库连接错了吧,在数据源中 用 sa登录验证看看,可能windows集成验证有问题

忘了你是 oracal 了,看看配置的文档吧对比看看会看出问题的

风醉 | 园豆:1197 (小虾三级) | 2014-12-10 09:31

@风醉: 用sa登陆会报错。。。不知道是不是我的sql也是直接Windows验证的原因

莲藕排骨汤 | 园豆:30 (初学一级) | 2014-12-10 09:41

@莲藕排骨汤: 问题已找到。。。。我用的JKD1.8,还是谢谢你的无私帮助 

莲藕排骨汤 | 园豆:30 (初学一级) | 2014-12-10 13:11

@风醉: 问题已找到。。。。我用的JKD1.8,还是谢谢你的无私帮助 

莲藕排骨汤 | 园豆:30 (初学一级) | 2014-12-10 13:12

@莲藕排骨汤: 不客气,一般找到问题点就容易解决问题

风醉 | 园豆:1197 (小虾三级) | 2014-12-10 13:42

@莲藕排骨汤: jdk1.8怎么了,我的这个也不行啊Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

高籍 | 园豆:200 (初学一级) | 2016-09-01 20:23

@莲藕排骨汤: 问题是什么撒,jdk1.8又怎么了

大湿兄显灵通 | 园豆:200 (初学一级) | 2017-03-12 13:21

@大湿兄显灵通: 好像用1.7就行

莲藕排骨汤 | 园豆:30 (初学一级) | 2017-04-24 11:48
其他回答(2)
0

我是用的1.7还是不行啊 报错是表不存在  [Microsoft][ODBC SQL Server Driver][SQL Server]对象名 'tb1' 无效

但是我数据库和表都是有的,且insert语句在SQL查询里面也可以执行

IT菜鸟2013 | 园豆:202 (菜鸟二级) | 2017-10-24 21:20
0

该驱动包在1.7以及之前版本java的 rt.jar中,从1.8开始移除掉了

为了IT | 园豆:202 (菜鸟二级) | 2018-11-27 20:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册