不用配置,访问access?(50分)

  • 主题发起人 主题发起人 szzhb
  • 开始时间 开始时间
S

szzhb

Unregistered / Unconfirmed
GUEST, unregistred user!
jdbc访问access数据库,需要建立dsn,如果把程序拷贝到其他计算机上,因为没建立相应的dsn,则程序出错,怎们解决,能不能象vb,delphi一样,把access数据库和程序放到同一目录下,不用建立dsn。怎么写程序?
这个问题我在www.java.com.cn,www.javaresearch.org上也问了,有很多人看了这个帖子,却不能解决,很让人失望,
不只这儿的高手能否解决?
 
你把dsn一起发布不可以的吗,我不知道jdbc是否支持文件型dsn
 
import java.sql.*;
public class TestAccess
{
public void SearchRooms()
{
Connection con;
Statement stmt;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E://delphibbs.mdb";
con = DriverManager.getConnection(url, "", "");
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from rooms");

while (rs.next())
{
String str=rs.getString("room");
System.out.print(str+"/n");

}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args)
{
TestAccess ta=new TestAccess();
ta.SearchRooms();
//System.out.println("Hello World!");
}
}
 
java能不能象vb,delphi一样,把access数据库和程序放到同一目录下,然后用一个函数得到当前的路径(用哪个函数?)?我知道delphi中可用getdir(0),vb中可用app.path。
 
String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};dbq=";
url=url+application.getRealPath("ybqh.mdb");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(url,"sa","sa");
 
我综合了only you、wind520的方法,用如下程序测试(采用JCreatePro),我已经把delphibbs.mdb文件放在[red]TestAccess.class及TestAccess.java[/red]文件的同一目录下,但都不行,编译错误在程序下面,请指教:
import java.sql.*;
public class TestAccess
{
public void SearchRooms()
{
Connection con;
Statement stmt;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E://delphibbs.mdb";
String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};dbq=";
url=url+application.getRealPath("delphibbs.mdb");
con = DriverManager.getConnection(url, "", "");
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from rooms");

while (rs.next())
{
String str=rs.getString("room");
System.out.print(str+"/n");

}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args)
{
TestAccess ta=new TestAccess();
ta.SearchRooms();
//System.out.println("Hello World!");
}
}
C:/Program Files/Xinox Software/JCreator Pro/MyProjects/TestAccess/TestAccess.java:12: cannot resolve symbol
symbol : variable application
location: class TestAccess
url=url+application.getRealPath("delphibbs.mdb");
^
 
application.getRealPath("delphibbs.mdb");
在JSP中才可以用,在JSp中传值到JavaBean中吧,
application.getRealPath应该是取的虚拟目录的在加上你程序的path就可以了
 
那么在java application程序中就没有我提出的问题的解决方法吗?
 
好象是yourclass.getClass().getResource(".")。
(我刚才测试了一下,输出结果为:
路径为file:/D:/jb/mytestpro/classes/mytestpro/,我的class文件就在这里)
如果你已经打包成jar文件,且其它文件与jar文件在同一目录,
你直接new FileOutputStream("myfile.txt"),就可以取得的。
 
可以用System.getProperts("user.dir")+System.getProperts("file.separator")
获得当前所在的目录。但不建立dsn,好象不行。因为java必须通过jdbc-odbc桥才能访问
access数据库。
欢迎大家就这个问题继续讨论!
 
多人接受答案了。
 
后退
顶部