下面这个是JavaBean实现用户名的验证。
package testOnline;
import java.sql.*;public class user
{
String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
String url="jdbc:odbc:TestOnline";
Connection conn=null;
ResultSet rs=null;
public user()
{
try
{
Class.forName(sDBDriver);
}catch(ClassNotFoundException e){}
}
public ResultSet executeQuery(String sql)
{
rs=null;
try
{
conn=DriverManager.getConnection(url,"sa","");
Statement stmt=conn.createStatement();
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
}catch(SQLException e){System.out.print(e);}
return rs;
}

/*public static void main(String[] args)
{
user u=new user();
String sql="select * from student";
ResultSet rs=u.executeQuery(sql);
try{
while(rs.next())
{
System.out.println(rs.getString("stuId"));
}
}catch(SQLException e){System.out.print("SQLException:"+e);}
}*/}
下面这个是JSP文件。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> login confirm </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD><BODY>
<%@page language="java" import= "java.sql.*"%>
<jsp:useBean id="users" scope= "page" class="testOnline.user"/>
<%
String name=request.getParameter("user");
String password=request.getParameter("password");String sql="select * from student where stuId='"+name+"' and stuPwd='"+password+"'";
ResultSet rs=users.executeQuery(sql);
if(rs.next())
{
rs.close();
session.putValue("name",name);
%>
<jsp:forward page="index.jsp"/>
<%}
else
{
rs.close();
%>
<jsp:forward page="login.html"/>
<%}
</BODY>
</HTML>
 但是老有异常,在tomcat的log中有以下字眼
信息: Server startup in 39597 ms
java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
但是在那个JAVA文件里面如果加上main方法来执行,程序里面注释的部分,可以把数据库里面的内容打印出来,是怎么回事啊?