2 huiers huiers 于 2016.02.15 19:09 提问

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个回答

caozhy
caozhy   Ds   Rxr 2016.02.15 21:28

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

huiers
huiers   2016.02.16 07:16

但是我用Excel 表格做的一个vba程序就可以连接上公共盘的access。多个表格在不同电脑同时运行,只要那些电脑能访问公共盘。都能通过Excel 表格里面我写的vba 代码对数据库操作。
对数据库的操作都是打开用完立马关闭的。所以update 一下 这些都是不冲突的啊 。 公司只有access 。
我要求的这程序功能很简单。用EXCEL 表格都可以完成。 但是Excel 表格要是不连接数据库就是单机版。不适用多台电脑同时运行。还有就是总是对着一个表格操作看着很不舒服。别人对表格单元格删除什么的误操作都可能影响代码的运行。后期需要更大的工夫去维护。
在这里我就是想做一个有后台数据库的小应用。 各位帮推荐下用什么编写合适呢。公司的SAP 是基于java 编写的。所以每台电脑在转系统的时候都装了java。公司的office 是2007 的纯英文版。所以目前能用的数据库 也就是只有access!
求方案

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!