JSP连接数据库问题

yaoxj2003 2008-03-10 06:19:13
如下代码
Database.java
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DataBase
{
protected String jdbcStr;
protected String conStr;
protected Statement stmt;
protected String sql;
protected Connection conn;
protected ResultSet rs;
protected boolean isTranStarted;


public DataBase()
{
isTranStarted = false;
}

public DataBase(String jdbcStr,String conStr)
{
isTranStarted = false;
}

protected void connect(String jdbcStr,String conStr) throws SQLException
{
this.jdbcStr =jdbcStr;
this.conStr =conStr;

try{
System.out.println("JDBC Driver:"+this.jdbcStr);
Class.forName(this.jdbcStr);
}catch (Exception e){
System.out.println("Load JDBC Driver Error: "+e.getMessage());
throw new SQLException("Load JDBC Driver Error: " + e.getMessage());
}

try{
conn =DriverManager.getConnection(conStr);
}catch(Exception e){
System.out.println("Load JDBC Connection Error: "+e.getMessage());
throw new SQLException("Load JDBC Connection Error: " + e.getMessage());
}

try{
stmt =conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
}catch(Exception e) {
System.out.println("Load JDBC Statement Error: "+e.getMessage());
throw new SQLException("Load JDBC Statement Error: " + e.getMessage());
}
}


public void startTransaction() throws SQLException
{
conn.setAutoCommit(false);
isTranStarted = true;
}


public void commit() throws SQLException
{
if (isTranStarted)
{
conn.commit();
isTranStarted = false;
}
}


public void rollback()
{
if (isTranStarted)
{
try{
conn.rollback();
}catch (Exception e){
System.out.println("rollback error: " +e.getMessage());
}
isTranStarted = false;
}
}


public ResultSet executeQuery(String sql)
{
try
{
rs =stmt.executeQuery(sql);
}
catch(Exception e)
{
System.out.println("executeQuery error: " + e.getMessage());
return null;
}
return rs;
}


public int executeUpdate(String sql) throws SQLException
{
return stmt.executeUpdate(sql);
}


public void close()
{
if (isTranStarted ==true)
{
isTranStarted = false;
try{
conn.rollback();
}catch (Exception e){
System.out.println("rollback error: "+e.getMessage());
}
}
if(rs !=null)
try{
rs.close();
}catch (Exception e){
System.out.println("resultset close error: "+e.getMessage());
}
if(stmt !=null)
try{
stmt.close();
}catch (Exception e){
System.out.println("statement close error: "+e.getMessage());
}
if(conn !=null)
try{
conn.close();
}catch (Exception e){
System.out.println("connection close error: "+e.getMessage());
}
}
}
myoa.java
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
import java.sql.SQLException;
public class myoa extends DataBase
{
public myoa()
{
String host="localhost";
String databasename="oa";
String username="sa";
String password="123";
String jdbcStr;
String conStr;
String debug="yes";
jdbcStr="com.microsoft.jdbc.sqlserver.SQLServerDriver";
conStr ="jdbc:microsoft:sqlserver://"+host+":1433;User="+username+";Password="+
password+";DatabaseName="+databasename;
if(debug.equals("yes"))
{
System.out.println(conStr);
}
try
{
super.connect(jdbcStr,conStr);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
public static void main(String[] args)
{
myoa oadb =new myoa();
String sql="Insert into test2 values ('test')";
try
{
int ret =oadb.executeUpdate(sql);
System.out.println("insert result: "+ret);
}catch (Exception e){
oadb.rollback();
System.out.println("update error: "+e.getMessage());
}
myoa.close();
}
}
checklogin.jsp
<%@ page language="java" import="java.sql.*,com.myoa.db" contentType="text/html;charset=gb2312"%>
<jsp:useBean id="oadb" scope ="page" class="com.myoa.db"/>
<%
String loginID = new String(request.getParameter("LoginID").getBytes("ISO-8859-1"));
String password = new String(request.getParameter("Password").getBytes("ISO-8859-1"));
String adminCheck ="";

String strsql = "select count(*) from User_Information";
ResultSet rs = oadb.executeQuery(strsql);
rs.next();
if (rs.getInt(1)<1)
{
if (loginID.equals("admin") && password.equals("admin"))
{
...
...
}
JSP运行时总是提示红色的地方出错,看过原因是返回的记录集是空的,但数据表是有数据,不知道错在哪...
...全文
97 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ymt9624641 2008-03-10
  • 打赏
  • 举报
回复
那一句先判断一下记录集不为空才继续
if(rs.next())
{
if (rs.getInt(1) <1)
{
if (loginID.equals("admin") && password.equals("admin"))
.....
{
}

一楼说的问题应该是笔误吧?
CDSAP 2008-03-10
  • 打赏
  • 举报
回复
第一,首先确认你的sql语句有没有问题;
第二,一定要把rs.next()放在if里,如果查出的结果是空,if的值就是false,
rs.getInt(1) <1 就不会被执行
CHR_WHY 2008-03-10
  • 打赏
  • 举报
回复
你应该先判断所取出来的ResultSet这个结果集是否为空,next()方法已经将光标移到了开始的地方,若结果集为空当然出错了!
String strsql = "select count(*) from User_Information";
这个SQL语句没有问题吗?
老紫竹 2008-03-10
  • 打赏
  • 举报
回复
String strsql = "select count(*) from User_Information";
ResultSet rs = oadb.executeQuery(strsql);
if(rs.next()){ // 这里多增加一个判断。同时你确认一下前面的SQl语句真的能运行吗?
if (rs.getInt(1) <1)
{
if (loginID.equals("admin") && password.equals("admin"))
{

}

另外,楼上说的我也没看到,估计你笔误了!

我想问题可能出现在这里,我没有看到你的getConnection的代码,以及初始化smtp的代码
,你的程序因应该抛出了异常才对。
executeQuery error: nullPointerException

仔细看看这段代码吧!

public ResultSet executeQuery(String sql)
{
try
{
rs =stmt.executeQuery(sql);
}
catch(Exception e)
{
System.out.println("executeQuery error: " + e.getMessage());
return null;
}
return rs;
}
hp5212000 2008-03-10
  • 打赏
  • 举报
回复
<jsp:useBean id="oadb" scope ="page" class="com.myoa.db"/>
不知道lz这里边的db类指的是哪个~

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧