huiers 2016-02-15 11:09 采纳率: 0%
浏览 1544

java 连接access2007数据库问题!

求各位大神解惑!
我是连接一个放在公共盘的数据库。这样做的应用谁都能用。
public class ConnectAccess {

            private static String strurl;

            public void setStrurl(String strurl,int pwd){

            this.strurl="jdbc:odbc:driver={Microsoft Access Driver (*.accdb)};DBQ="+strurl+";pwd="+pwd;

            }

            public ConnectAccess(String strurl,String pwd){//构造方法

            ConnectAccess.strurl="jdbc:odbc:driver={Microsoft Access Driver (*.accdb)};DBQ="+strurl+";pwd="+pwd;

            //System.out.println(ConnectAccess.strurl);

            //strurl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=D:\\ScannerList.accdb;pwd=3759";

            }

            public ConnectAccess(){}

            public static void main(String[] args){



            ConnectAccess ca =new ConnectAccess("\\\\huafile01\\WH\\20_REC\\02.RMA & MRO\\database\\ScannerList.accdb","3759");

            ca.tryConnect();

            }

             public  boolean tryConnect(){

            boolean falg=false;

            //String sql="select * From USERinfo where [USER]=\""+user+"\"" ;

            String sql="select * From PART_MPN ";

            Connection conn = null;

            Statement stmt = null;

            ResultSet rs = null;



            try {

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

            System.out.println("驱动: "+cc);

            System.out.println("strurl: "+strurl);

            conn = DriverManager.getConnection(strurl);//此句报错空指针!

            System.out.println("conn: "+conn);

            stmt = conn.createStatement();

            System.out.println("stmt: "+stmt);



            rs = stmt.executeQuery(sql);

            System.out.println("sql: "+sql);

            System.out.println("rs: "+rs);

            falg=rs.next();

            }catch (Exception e) {

            System.err.println(e);

            }finally{

            try {

            rs.close();

            } catch (Exception ex) {

            }

            try {

            stmt.close();

            } catch (Exception ex) {

            }

            try {

            conn.close();

            } catch (Exception ex) {

            }

            }

              return falg;



              }

这是一个测试连接的
之前用一个本地盘的jdk1.6 都一切正常。后来换了个C 盘的jdk 1.8 之后就在红色部分报错空指针。用本地盘的jdk 做出来的应用 打包成jre 之后一直无法加载驱动。就是Class.forName没结果。网上找了好多没有能解决的。
换了驱动索性把工作路径也设置在了公共盘。但是这样就是在连接数据库Connection时总是出错!求解惑。
页面设计都设计好了。本来用的D盘的jdk1.6 一切无问题都测试好了。 结果用myeclipse 导出成jre 就是无法加载驱动。 用电脑自带的c盘的jdk1.8 就是无法连接数据库。

    说一下我这里的开发环境;
        1公司的电脑。我做个应用要给很多电脑用。公司电脑有公共盘。单个电脑无权限连接别的电脑。所有只有借助公共盘放数据库
            2 个人电脑的C盘个人无权限增删改。只可读。公司装的系统每台机都有jdk。 就在C:\Program Files\Java\jre1.8.0_40 。 
            3 我下载下来了一个JDK 但是无法安装到公共盘去。 没有权限。

            到底怎样才能正常加载驱动连接数据库工作啊 !
  • 写回答

2条回答 默认 最新

  • threenewbee 2016-02-15 13:28
    关注

    首先需要用net use建立权限,否则没法连上你的共享,其次,要对那个盘有写入权限才行。
    就算满足这些,可以访问了,但是不同用户不可以同时访问。因为access基于文件,必须独自锁定文件。
    所以你的方案行不通,建议还是用sql server或者mysql比较好。

    评论

报告相同问题?

悬赏问题

  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波