写的真乱 !!!
-----------------
1、代码段的运行结果是什么,请帖出来,再来分析你的问题?
2、说一个跟你程序无关的问题,你这个Checkpasswd一直都是static ,我只能说呵呵了 ...
从我个人的理解来看,如果不是为了获取些什么必要的“封装”信息 , 何必用static ?
3、先看(2、),然后要说,你这里很多函数其实就一两句话的事,整这么多你不嫌累我们看得都郁闷!
可读性不好,所以我说你这个程序"写的真乱!"
-----------------
1、代码段的运行结果是什么,请帖出来,再来分析你的问题?
2、说一个跟你程序无关的问题,你这个Checkpasswd一直都是static ,我只能说呵呵了 ...
从我个人的理解来看,如果不是为了获取些什么必要的“封装”信息 , 何必用static ?
3、先看(2、),然后要说,你这里很多函数其实就一两句话的事,整这么多你不嫌累我们看得都郁闷!
可读性不好,所以我说你这个程序"写的真乱!"
conn
com.microsoft.sqlserver.jdbc.SQLServerConnection@c75e4fc
stmt
com.microsoft.sqlserver.jdbc.SQLServerStatement@11bbf1ca
rs
com.microsoft.sqlserver.jdbc.SQLServerResultSet@6a8c436b
query
exe
close
isexist
上面是执行过程
刚学完面向对象的JAVA,见谅
com.microsoft.sqlserver.jdbc.SQLServerConnection@c75e4fc
stmt
com.microsoft.sqlserver.jdbc.SQLServerStatement@11bbf1ca
rs
com.microsoft.sqlserver.jdbc.SQLServerResultSet@6a8c436b
query
exe
close
isexist
上面是执行过程
com.microsoft.sqlserver.jdbc.SQLServerConnection@c75e4fc
stmt
com.microsoft.sqlserver.jdbc.SQLServerStatement@11bbf1ca
rs
com.microsoft.sqlserver.jdbc.SQLServerResultSet@6a8c436b
query
exe
close
isexist
上面是执行过程建议你调试,一步步走,看哪一步出问题了,注意控制台打印出的异常
public class UserDaoImpl implements UserDao { @Override
public User findWithLoginnameAndPassword(String loginname, String password)
throws SQLException {
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
con = ConnectionFactory.getConnection();
StringBuffer sql = new StringBuffer();
sql.append(" SELECT * FROM tb_user ");
sql.append(" WHERE loginname = ? ");
sql.append(" AND password = ? ");
System.out.println(sql.toString());
pstm = con.prepareStatement(sql.toString());
pstm.setString(1, loginname);
pstm.setString(2, password);
rs = pstm.executeQuery();
if(rs.next()){
User user = new User();
user.setId(rs.getInt("id"));
user.setPassword(password);
user.setLoginname(loginname);
user.setUsername(rs.getString("username"));
user.setAddress(rs.getString("address"));
user.setPhone(rs.getString("phone"));
user.setRole(rs.getInt("role"));
return user;
}
return null;
} catch (Exception e) {
}finally{
ConnectionFactory.close(con, pstm, rs);
}
return null;
}}
数据库连接工厂
public class ConnectionFactory {
private static DataSource ds;
static{
try {
Context context = new InitialContext();
ds = (DataSource) context.lookup("java:/comp/env/jdbc/bookDB");
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
try {
return ds.getConnection();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void close(Connection con,Statement stm,ResultSet rs){
try {
if (rs != null) rs.close();
if (stm != null) stm.close();
if (con != null) con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}tomcat的context配置:
<Resource name="jdbc/bookDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/buy"/>
难得还有人有耐心看这么一堆乱七八糟的方法。JDBC的API都不熟悉你封装这么一堆东西干P。