这个是dao层的代码。
public class userdao {
private Connection connection =null;
private PreparedStatement ps =null;
//@SuppressWarnings("null")
public User query(String username) throws Exception{
ResultSet rs = null;
//String username = user.getUsername();
//String password = user.getPassword();
String sql = "select * from user where username =?";
connection=DB.getConnection();
ps = DB.prepared(connection, sql);
ps.setString(1, username);
rs=ps.executeQuery();
if(rs==null){
return null;
}
User user = new User();
while(rs.next())
{
user.setUsername(rs.getString(1));
user.setPassword(rs.getString(2));
//System.out.println("目前用户为"+user);
}
rs.close();
ps.close();
connection.close();
return user;
}
/* else{
return null;
}*/
public User add(User user) throws Exception{
//if(query(user.getUsername())==null){
connection = DB.getConnection();
String sql = "insert into user (username,password) values(?,?)";
ps = DB.prepared(connection, sql);
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
ps.executeUpdate();
ps.close();
connection.close();
//}//else{
// return null;
//}
return user;
}
}
这个是service的代码。
public class UserService {
private userdao daoUserdao = new userdao();
public User login(String username,String password) throws Exception{
User user = daoUserdao.query(username);
if(user==null){
throw new Exception("用户名错误!");
}
if(!password.equals(user.getPassword())){
throw new Exception("密码错误!");
}
return user;
}
public void regist(User user)throws Exception{
User _user = daoUserdao.query(user.getUsername());
if(_user!=null){
throw new Exception("用户名已经被注册!");
}else{
daoUserdao.add(user);
}
}
}
输入任何一句注册,都显示已经被注册。


解决方案
10
请把这个是dao层的代码de 17行写到while{ }循环中。你这样创建对象会覆盖掉前面的。
30
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.sun.entity.User
import com.sun.DBUtil
//DBUtil增删改的通用方法
{
/**
* 更新通用的方法
* @param sql(update/insert/delete)
* @param pramValue(传入参数,没有设为null)
*/
public static int update(String sql,Object[] prams){
Connection conn=null;
PreparedStatement pst=null;
int num=0;
try {
//创建链接
conn=getConnection();
//创建执行命令pst对象
pst=conn.prepareStatement(sql);
//设置元参数,得到占位符的个数
int count=pst.getParameterMetaData().getParameterCount();
//设置占位符参数的值
if(prams!=null&&prams.length>0){
//循环给参数赋值
for(int i=0;i<count;i++){
pst.setObject(i+1, prams[i]);
}
}
//执行更新
num=pst.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally{
close(conn, pst);
}
return num;
}
/**
* 动态赋值
* @param pst
* @param prams
*/
public static void setPrams(PreparedStatement pst,Object[] prams){
//判断prams能否为空
if(prams==null) {
return;
}
//循环赋值
for(int i=0;i<prams.length;i++){
try {
pst.setObject(i+1,prams[i]);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
class Dao{
public boolean add(User u) {
/**
* 添加
*/
String sql=”insert into newsauthor values(PERSON_SEQUENCE.nextval,?,?)”;
Object[] prams={u.getName(),u.getPwd()};
int f=DBUtil.update(sql, prams);
if(f>0){
return true;
}
return false;
}
/**
* 查询
*/
public User selectUser(String name, String pwd) {
User u=null;
conn=DBUtil.getConnection();
try {
String sql=”select * from newsauthor where aname=? and apwd=?”;
pst=conn.prepareStatement(sql);
Object [] prams={name,pwd};
DBUtil.setPrams(pst, prams);
rs=pst.executeQuery();
if(rs.next()){
u=new User();
u.setUserid(rs.getInt(“auid”));
u.setName(rs.getString(“aname”));
u.setPwd(rs.getString(“apwd”));
}
} catch (SQLException e) {
e.printStackTrace();
}
return u;
}
}
service 你就可以本人写了
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.sun.entity.User
import com.sun.DBUtil
//DBUtil增删改的通用方法
{
/**
* 更新通用的方法
* @param sql(update/insert/delete)
* @param pramValue(传入参数,没有设为null)
*/
public static int update(String sql,Object[] prams){
Connection conn=null;
PreparedStatement pst=null;
int num=0;
try {
//创建链接
conn=getConnection();
//创建执行命令pst对象
pst=conn.prepareStatement(sql);
//设置元参数,得到占位符的个数
int count=pst.getParameterMetaData().getParameterCount();
//设置占位符参数的值
if(prams!=null&&prams.length>0){
//循环给参数赋值
for(int i=0;i<count;i++){
pst.setObject(i+1, prams[i]);
}
}
//执行更新
num=pst.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally{
close(conn, pst);
}
return num;
}
/**
* 动态赋值
* @param pst
* @param prams
*/
public static void setPrams(PreparedStatement pst,Object[] prams){
//判断prams能否为空
if(prams==null) {
return;
}
//循环赋值
for(int i=0;i<prams.length;i++){
try {
pst.setObject(i+1,prams[i]);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
class Dao{
public boolean add(User u) {
/**
* 添加
*/
String sql=”insert into newsauthor values(PERSON_SEQUENCE.nextval,?,?)”;
Object[] prams={u.getName(),u.getPwd()};
int f=DBUtil.update(sql, prams);
if(f>0){
return true;
}
return false;
}
/**
* 查询
*/
public User selectUser(String name, String pwd) {
User u=null;
conn=DBUtil.getConnection();
try {
String sql=”select * from newsauthor where aname=? and apwd=?”;
pst=conn.prepareStatement(sql);
Object [] prams={name,pwd};
DBUtil.setPrams(pst, prams);
rs=pst.executeQuery();
if(rs.next()){
u=new User();
u.setUserid(rs.getInt(“auid”));
u.setName(rs.getString(“aname”));
u.setPwd(rs.getString(“apwd”));
}
} catch (SQLException e) {
e.printStackTrace();
}
return u;
}
}
service 你就可以本人写了