public boolean saveUser(String userName,String password){
conn=getCon();
String sql="insert into UserInfo values (?,?)";
try {
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,userName);
pstmt.setString(2,password);
int count=pstmt.executeUpdate(sql);
if(count>0)
return true;
} catch (SQLException ex) {
}
return false; }帮忙看下这里是不是有问题
我不是很懂``主键我设的是userName
在SQL SERVER里设的
这里还要设吗?
应该是这句int count=pstmt.executeUpdate(sql);出的乱子.
ex.printStackTrace();
}
我感觉你是抛异常了,但出现异常你什么也没做,直接返回false了
加上:ex.printStackTrace();
pstmt.setString(1,userName);
pstmt.setString(2,password);
里的
username,password 改为一个实实在在的字符串试试我想是不是它们两没正常传到值
有问题直接就是FALSE呀.因该是SQL没写入.我把SQL打印了一下..
还是 insert into UserInfo values (?,?)因该是
pstmt.setString(1,userName);
pstmt.setString(2,password);
没有把数据插入问号.不知道怎么弄了望指教..
int count=pstmt.executeUpdate(sql);
sql不用加``= =;
一次是conn.prepareStatement(sql);而这里是第二次了,你在第一次之后设置了值,但第二次执行的语句却
没有值,所以有些情形下会抛值为设定异常。
改成count=pstmt.executeUpdate(sql)应该就没有问题了。
用pstmt.executeUpdate(s);的返回值来判断成功与否是有风险的,一般不用这个返回值做判断执行成功还是失败。
一般情形下,执行不成功就会有异常抛出,所以你完全可以到捕捉异常的地方返回false或其他可以代表
插入失败的表示。即使失败不是还可以回滚的吗?我们甚至可以回滚到一个具体的点,叫savepoint上。
pstmt.setString(2,password);
应该第一个问号,是该是0把。
pstmt.setString(0,userName);
pstmt.setString(1,password);
试一试