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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java连接access数据库----简单demo
用户java访问access2007 不需要配置数据源! public static void main(String[] args) throws SQLException, UnsupportedEncodingException { // --Access 数据库路径 String dbpath = "C:\\Users\\hlu\\Desktop\\hua\\hua_di
【ASP】链接Access2007与Access2003的不同写法
微软这家伙就喜欢把程序、编程语言、文件结构改来改去。 如果你的数据库是Access2007可以直接如下图,通过Access2007中的另存为,把数据库直接改成Access2003的数据库*.mdb 但同时注意到你的ASP链接Access的部分,必须从 ASP链接Access2007的写法: <% db="Database.mdb" Set conn = Server.CreateO
access 2007连接字符串
以前写网页都是用的ACCESS2003数据库,连接字符串也通常是以下两种:一:connstr="DBQ="+server.mappath("数据库名")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)
C#连接Access2007数据库代码实例完整版
1、建立一个Access数据库名为CSharpTest.accdb,里面有一个Person表,它有三个字段ID、PersonName和Age,分别是自动增长列、文本和数字类型。并插入两条记录,如下所示: PersonnNme Age lishi 30 wangwu 20 2、打开VS2008,菜单中点"文件"->"
vb.net连接access2007
今天弄了一下午用vb.net连接access2007 开始想应该是按套路来,但过程中遇到了各种各样的问题 首先是连接字符串 请注意连2007access时的字符串是 Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + My.Application.Info.DirectoryPath + "\data\hostel.accdb" My.Applic
access2007数据库连接字符串
转载地址:http://blog.163.com/danshiming@126/blog/static/1094127482011225102328905/   这次重装系统后我装上了ACCESS2007,在生成数据库时,我就发现没有了MDB的数据库格式,生成后我把它名改成了MDB(有点搞笑哦,我习惯了用MDB后缀的)。 按第一种方法,在连接时数据库出现错误:Microsoft OLE DB
vc6.0连接access2007数据库
第一步:在stdafx.h头文件中加入#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF"),rename("BOF","adoBOF") 第二步:初始化COM库子main函数中CoInitialize( NULL );  CoUninitialize
[数据库连接字符串] Access2007 连接字符串
#Container{ min-height:600px; _height:600px; padding:10px; min-width:680px;}*{ font-family:Tahoma; font-size:9pt;}.csCarrierTable{ margin-top: 10px;
c#连接access 2007连接字符串
c#连接access 2007连接字符串 以前写网页都是用的ACCESS2003数据库,连接字符串也通常是以下两种: 一:connstr="DBQ="+server.mappath("数据库名")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)} 二、provider=Microsoft.Jet.OLEDB.4.0;data
在VB6.0中设置ADO控件属性连接Microsoft ACCESS 2007数据库
在VB6.0中设置ADO控件属性连接Microsoft ACCESS 2007数据库        使用VB6.0一般支持.mdb格式的数据库,为了能够使VB6.0能连接.accdb格式的数据库,需要一定的设置。微软公司的Microsoft ACCESS 2007生成的数据库刚好是.accdb的数据库。之前本人第一次用VB6.0编写程序时,当涉及到ADO控件连接数据库部分遇到了ADO控件相关属性设