做了一个登录页面,以一个check.jsp来检查用户名和密码,成功则跳到success.jsp,失败则跳到faliure.jsp,建表没有问题。但不知道为什么总是跳到失败的页面。一个朋友给我测试代码检查了一下,说是数据库加载失败,想问问真是这样吗?如果不是那又是什么原因登录不上去?
测试代码:
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class cishi {
private static Connection con;
/**
* @param args
*/public Connection getDBconnServer2005(String databasename,String user,String pwd){
String url="jdbc:oracle:thin:@localhost:1521:LYGJF";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection(url,"lygjf","3224805");
} catch (ClassNotFoundException e) {
System.out.println("数据库驱动加载失败!!!");
} catch (SQLException e) {
System.out.println("数据库连接失败!!!");
}
return con;
}
public Connection getDB(){
return con;
}
boolean flag = false ;
public boolean test(String userid,String password){
String sql = "SELECT userid,name FROM tuser WHERE userid=? AND password=?" ;
try {
PreparedStatement pstmt = con.prepareStatement(sql) ;
pstmt.setString(1,userid) ;
pstmt.setString(2,password) ;
ResultSet rs = pstmt.executeQuery() ;
if(rs.next()){
// 如果有内容,则此处执行,表示查询出来,合法用户
flag = true ;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//如果输出为空 说明数据库没有打开
System.out.println(new cishi().getDB());
System.out.println(new cishi().test("用户名", "密码"));
}}
测试代码:
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class cishi {
private static Connection con;
/**
* @param args
*/public Connection getDBconnServer2005(String databasename,String user,String pwd){
String url="jdbc:oracle:thin:@localhost:1521:LYGJF";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection(url,"lygjf","3224805");
} catch (ClassNotFoundException e) {
System.out.println("数据库驱动加载失败!!!");
} catch (SQLException e) {
System.out.println("数据库连接失败!!!");
}
return con;
}
public Connection getDB(){
return con;
}
boolean flag = false ;
public boolean test(String userid,String password){
String sql = "SELECT userid,name FROM tuser WHERE userid=? AND password=?" ;
try {
PreparedStatement pstmt = con.prepareStatement(sql) ;
pstmt.setString(1,userid) ;
pstmt.setString(2,password) ;
ResultSet rs = pstmt.executeQuery() ;
if(rs.next()){
// 如果有内容,则此处执行,表示查询出来,合法用户
flag = true ;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//如果输出为空 说明数据库没有打开
System.out.println(new cishi().getDB());
System.out.println(new cishi().test("用户名", "密码"));
}}
在%ORACLE_HOME%\jdbc\lib\classes12.jar
false请问这是什么意思?驱动加载了吗?false说明了什么问题?
显然加载了,打出来的是连接对象的地址(虚拟机地址)
false说明查询没有结果。
你将getDBconnServer2005改为 static 函数
或
调用getDB()前先调用System.out.println(new cishi().getDBconnServer2005());
试试,