Java怎么把 连接access数据库的路径改成相对路径

import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;

class BookBrower implements ActionListener
{

JFrame f;
Container cp;
JPanel jpS,jpanelWest;
JButton  jbt1,jbt2;//按钮,查询、取消、修改
JLabel label,L;             //标签
    //定义文本框
JTable table;//用来接收数据库中返回的信息
Object columnName[]={"图书名","图书号","单价","作者","出版社","入库时间"};
Object ar[][] =new Object[80][6];
String sno;
String count="xx";

BookBrower()

{
f=new JFrame();
cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框
jpS=new JPanel();

jpanelWest=new JPanel();

//------------------------------------------------
jbt1=new JButton("确定");   
jbt2=new JButton("返回");


//------------------------------------------------
label=new JLabel("<html><font color=#CC00FF size='4'>图书概览</font>",SwingConstants.CENTER);
label.setForeground(Color.blue);
L=new JLabel("书库现在共有图书"+count+"本");
//------------------------------------------------
table=new JTable(ar,columnName);//ar存放表中的数据,columnname表示列名
JScrollPane scrollpane = new JScrollPane(table);


//------------------------------------------------
//布局,添加控件

jpS.add(jbt1);

jpS.add(jbt2);



JPanel jpanel=new JPanel();
jpanel.add(label);



JPanel pp4=new JPanel();
JPanel jpE=new JPanel();

cp.add(jpanel,"North");
JPanel jp=new JPanel();
//jp.add(scrollpane);
JPanel p=new JPanel();//用来放两个表
p.setLayout(new BorderLayout());

p.add(L,"North");
p.add(scrollpane);

cp.add(pp4,"West");
cp.add(p,"Center");
cp.add(jpS,"South");

cp.add(jpE,"East");

//------------------------------------------------
 Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width;                 /*取得显示器窗口的宽度*/
int y=screen.height;                    /*取得显示器窗口的高度*/
 f.setSize(1200,450);
 int xcenter=(x-1200)/2;
 int ycenter=(y-350)/2;
 f.setLocation(xcenter,ycenter);/*显示在窗口中央*/
  f.setVisible(true);

//-------------------------------------------------
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);

/* f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);*/
}
//------------------------------------------------
int i=0;
public void showRecord()
{
while(i>=0)
{

ar[i][0]="";
ar[i][1]="";
ar[i][2]="";
ar[i][3]="";
ar[i][4]="";
ar[i][5]="";
i--;
}
i=0;

    try{
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
       }catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
    try{
         String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=g:/111/222/aaa.accdb";//直接使用当前类目录下的数据库文件
         Connection con=DriverManager.getConnection(url);

         String s="select * from book ";
         Statement sql=con.createStatement();
          ResultSet rs=sql.executeQuery(s);


         while(rs.next())
          {
            String bname=rs.getString(1);
            String bno=rs.getString(2);
            String price=rs.getString(3);
            String writer=rs.getString(4);
            String publish=rs.getString(5);
            String indate=rs.getString(6);
            ar[i][0]=bname;
            ar[i][1]=bno;
            ar[i][2]=price;
            ar[i][3]=writer;
            ar[i][4]=publish;
            ar[i][5]=indate;
            i++;
          }
            count=""+i+"";
            L.setText("书库现在共有图书"+count+"本");
            f.repaint();

             con.close();
       }catch(SQLException g)
            {
             System.out.println("E Code"+g.getErrorCode());
             System.out.println("E M"+g.getMessage());
            }

 }

public void actionPerformed(ActionEvent e)
{

     String cmd=e.getActionCommand();
      if(cmd.equals("确定"))

           {
             f.hide();

          } 

       if(cmd.equals("返回"))
               f.hide(); 


}

public static void main(String []arg){

       BookBrower a=new BookBrower();
       a.showRecord();

}

}

3个回答

"...DBQ=g:/111/222/aaa.accdb";
->
..DBQ=" + ClassLoader.getSystemResource("") + "/aaa.accdb";

baidu_33457054
baidu_33457054 我在程序目录下新建一个文件夹然后把数据库文件放进出还是不行
大约 4 年之前 回复
caozhy
每个人都有一个梦才不会孤单的说话就有天堂 回复baidu_33457054: 要放在和程序相同的目录
大约 4 年之前 回复
baidu_33457054
baidu_33457054 按照你的方法改了,没有用啊. 我把数据库文件放在src文件夹下新建的文件夹了
大约 4 年之前 回复
baidu_33457054
baidu_33457054 按照你的方法改了,没有用啊. 我把数据库文件放在src文件夹下新建的文件夹了
大约 4 年之前 回复

--使用DataDirectory替换绝对路径
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db1.mdb;

baidu_33457054
baidu_33457054 能不能把完整代码发给我,小白 第一次弄数据库
大约 4 年之前 回复

能不能把完整代码发给我,小白 第一次弄数据库

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问