日期:2014-05-18  浏览次数:20572 次

看看我这个问题出在哪?
jsp连接access数据库的程序,有一个小问题,帮我看看

运行的话出现错误就是“未发现数据源名称”
这里“redsun”是数据源的名称,用户名密码都为空
如果在dbean.java中将“private String dbase;”改为
“private String dbase="redsun" ”那么程序运行正确
好像是我这个setDB()的方法没起作用啊,不清楚为什么

dbean.java的代码
package beans;
import java.sql.*;
public class dbean {
public dbean() {
}
//declare variable
private Connection conn = null;
ResultSet rs = null;
private String dbase;
private String user;
private String pass;

  public void setDB(String str) { //set dbase name
  this.dbase = str;
  }

  public void setUser(String str) { //set user name
  user = str;
  }

  public void setPass(String str) { //set user name
  pass = str;
  }

private String url ="jdbc:odbc:"+dbase+"";



private String drivername="sun.jdbc.odbc.JdbcOdbcDriver";


public Connection getConn(){//get database connection
try{
Class.forName(drivername);
conn = DriverManager.getConnection(url,user,pass);
}
catch(Exception e){
  System.err.println(e.getMessage());
}
return this.conn ;
}

public ResultSet getResult(String sql) {
try{
Statement stmt =
conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONL
Y);
rs = stmt.executeQuery(sql);
}
catch(Exception e){
  System.err.println(e.getMessage());
}
return this.rs;
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
show.jsp代码
<%@ page contentType="text/html;charset=gb2312" import="java.sql.*"%>
<jsp:useBean id="db" scope="page" class="beans.dbean" />
<%
ResultSet rs = null;
Connection conn = null;


db.setDB("redsun");
db.setUser(" ");
db.setPass(" ");

conn = db.getConn() ;
rs = db.getResult("select * from member");
while(rs.next()) {
%>
name:<%=rs.getString(2)%>
sex:<%=rs.getString(3)%>
<%}%>
<%out.print("Successful!\n");%>
<%
rs.close();
conn.close();
%>




------解决方案--------------------
你设置个断点跟一下!
我看程序了 应该没问题的呀!

------解决方案--------------------
初始化要
------解决方案--------------------
private String url ="jdbc:odbc:"+dbase+""; 

问题出在这一句上.

你虽然在JSP中通过SetDB()给dbase 变量赋值,但你的BEAN中并没有 url 变量相关的Set方法。

当在页面使用jsp:usebean的时候,url 的值已经被赋,,dbase的值再改变,URL的值也不会变了。

解决办法:在BEAN中写个setUrl的方法代替setDbase方法,在JSP页面把dbase做参数通过setUrl传入就可以了.