关于jsp中访问Access数据库的问题
2009-08-11 10:41
309 查看
本次项目要用jsp做一个网站,考虑到布属环境所限,不敢用网络数据库,就用了access数据库,路径是个问题。
问题一描述: mdb数据库文件不知该放到工程哪个目录。
问题解释:我用Netbeans6.1 IDE开发,工程目录文件夹 build、dist、lib、nbproject、src、test、web 。起初我将mdb文件放到工程根下,和以下文件夹平级,不行。放入web文件夹上与jsp文件平级,不行。放入build文件下也不行。连库时找不到文件呀
解决:
特别说明
我以为这样可以了,但调试时出现了以上的 stmt.executeUpdate("insert into [t1]([name]) values('中国')"); //插入记录 语句执行成功,但我打开数据库不见有记录插入的情况,后来查了资料后才知道,这是对访问路径的不了解造成的。具体情况如下:
在Netbeans IDE工程中,以上代码我读取的是“build/web/WEB-INF/classes/”下的mdb,但在"构建"(生成)工程时,需要从源路径“工程根/web/WEB-INF/classes/”下读取源mdb到以上构建路径下,换句话说,ide在编译生成工程时,会从“web/WEB-INF/classes/”下将mdb拷到“build/web/WEB-INF/classes/”下,因此,其实以上代码是insert到了build/web/WEB-INF/classes/下的mdb了,而在web/WEB-INF/classes/下的mdb并未因此改变。
另外:
如果你用了resp.sendRedirect(url); ,就要吧东西存在session里,在 B 里
用session取。
如果你用了RequestDispatcher rd = request.getRequestDispatcher("url");
rd.forward(request, response); 那么你就可以存在requset里。
问题一描述: mdb数据库文件不知该放到工程哪个目录。
问题解释:我用Netbeans6.1 IDE开发,工程目录文件夹 build、dist、lib、nbproject、src、test、web 。起初我将mdb文件放到工程根下,和以下文件夹平级,不行。放入web文件夹上与jsp文件平级,不行。放入build文件下也不行。连库时找不到文件呀
解决:
public class JDBCon { public Connection conn = null; public Statement stmt = null; public JDBCon(){ try{ String dd = this.getClass().getResource("/").getPath(); //得到当前类的路径并去除前面的/ String dir = dd.substring(1,dd.length()-1); String udl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+dir+"/SST.mdb"; //路径正确了,找到mbd了 //System.out.println("这个路径呀:"+dir); //String udl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+dir+"/tt.mdb"; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //System.out.println("当前上下文路径1:"+System.getProperty("user.dir").toString()); //System.out.println("当前上下文路径2:"+this.getClass().getClassLoader().getResource(".").getPath()); //System.out.println("当前上下文路径3:"+this.getClass().getResource("/").getPath()); //System.out.println("当前上下文路径4:"+System.getProperty("user.dir")); conn =DriverManager.getConnection(udl,"","") ;//空用户登录 stmt =conn.createStatement();// ResultSet rs = stmt.executeQuery("select * from t1"); //成功 while(rs.next()){ System.out.println(rs.getString("name")); } stmt.executeUpdate("insert into [t1]([name]) values('中国')"); //插入记录 int i = stmt.executeUpdate("insert into Deputy(id,name) values(1,'中华人民共和国')"); //再插入 stmt.close(); System.out.println(i);//插入一条 }catch(Exception ee){ System.out.println("数据库异常:"+ee.toString()); } }
特别说明
我以为这样可以了,但调试时出现了以上的 stmt.executeUpdate("insert into [t1]([name]) values('中国')"); //插入记录 语句执行成功,但我打开数据库不见有记录插入的情况,后来查了资料后才知道,这是对访问路径的不了解造成的。具体情况如下:
在Netbeans IDE工程中,以上代码我读取的是“build/web/WEB-INF/classes/”下的mdb,但在"构建"(生成)工程时,需要从源路径“工程根/web/WEB-INF/classes/”下读取源mdb到以上构建路径下,换句话说,ide在编译生成工程时,会从“web/WEB-INF/classes/”下将mdb拷到“build/web/WEB-INF/classes/”下,因此,其实以上代码是insert到了build/web/WEB-INF/classes/下的mdb了,而在web/WEB-INF/classes/下的mdb并未因此改变。
另外:
如果你用了resp.sendRedirect(url); ,就要吧东西存在session里,在 B 里
用session取。
如果你用了RequestDispatcher rd = request.getRequestDispatcher("url");
rd.forward(request, response); 那么你就可以存在requset里。
相关文章推荐
- 求助关于远程访问ACCESS数据库的问题
- 关于JSP不能通过浏览器直接访问,要通过servlet跳转,但一个jsp文件里面用<iframe>标签包含了另一个jsp的访问问题
- 关于JSP页面访问权限问题
- 关于jsp页面通过el表达式访问struts2值栈的问题
- 关于WEB-INF目录不提供外部访问及JSP引用 js,css 文件路径问题
- 关于WEB-INF目录不提供外部访问及JSP引用 js,css 文件路径问题
- 关于在myeclipse中用jsp访问实体bean的一个问题的解决(Exception sending context initialized event to listener instance of class)
- 关于SuperMap的ISManager访问权限问题
- 关于jsp中usebean中class=?问题
- 关于jsp中usebean中class=?问题
- 关于jsp中usebean中class=?问题
- 关于java访问access数据库
- jsp的response.sendRedirect()与request.getRequestDispatcher()关于路径跳转的问题
- ADO访问Access数据库在英文操作系统上出错的问题
- 关于linux下myeclipse打开jsp页面遇到的问题
- 关于ADO连接access数据库修改数据库记录的问题
- jsp中有关于超链接的问题
- 关于JSP源码泄漏问题的总结分析
- 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件
- 关于ionic中的https无法访问的问题