JSP对MYSQL数据库进行插入操作,总失败!

wbk54188 2008-04-07 10:26:15
JavaBean里的定义
public int register(String username,String psw)
{
String query = "insert into td_pjm_user (username, password) values( '"+username+"','"+psw+"')";
int res=0;
try
{
PreparedStatement ps = this.conn.prepareStatement(query);
res = ps.executeUpdate();

}
catch(Exception e)
{
this.error = e.toString();

}
return res;
}
Jsp中的调用
String user = request.getParameter("username");
String passw = td_pjm.md5(request.getParameter("psw"));
int res = td_pjm.register(user,passw);
if(res == 0)
{
out.println("<script language=\"JavaScript\" type=\"text/javascript\">alert(\"注册失败!\");window.close();</script>");
}
else
{
out.println("<a href='index.jsp'>返回登录页面</a>");
}
每次调用都直接弹出注册失败的窗口.请高手指点.非常感谢.
...全文
361 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
nihuajie05 2008-04-09
  • 打赏
  • 举报
回复
不会...
Sendler_Lee 2008-04-09
  • 打赏
  • 举报
回复
我的环境是myeclipse+tomact6.0 输出到myeclipse的console的窗口里面,也是tomact的后台.
Sendler_Lee 2008-04-08
  • 打赏
  • 举报
回复
要不然你先把MD5加密去掉,直接传入psw,看看能不能插入,如果可以,可能就是加密以后的数据长度和数据库字段长度的问题了吧
Sendler_Lee 2008-04-08
  • 打赏
  • 举报
回复
直接写在sql语句之前就可以了
public int register(String user, String psw) {
PreparedStatement pstmt = null;
int res = 0;
try {
//输出sql语句,会输出到后台要在后台查看
System.out.println(user + "::::" + psw);
String sql = " insert into td_pjm_user(username, password) values(?, ?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user);
pstmt.setString(2, psw);
res = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
return res;
}
return res;
}

按这样改过以后应该就可以了,我试过了,可以插入的
KK3K2005 2008-04-08
  • 打赏
  • 举报
回复
测试方法很多了
wbk54188 2008-04-08
  • 打赏
  • 举报
回复
我用的是MYSQL命令行的,没有界面,"insert into td_pjm_user (username, password) values( '"+username+"','"+psw+"')";

我试了,在DOS下,好使,插入了一条记录,可是我这个传参的过程有一个MD5的加密过程,所以--
KK3K2005 2008-04-08
  • 打赏
  • 举报
回复
"insert into td_pjm_user (username, password) values( '"+username+"','"+psw+"')";

这样的问题
以后直接把这个SQL的完整语句输出
然后到数据库的控制台下试
wbk54188 2008-04-08
  • 打赏
  • 举报
回复
怎么查看异常?
panxuan 2008-04-08
  • 打赏
  • 举报
回复
查看异常。
wbk54188 2008-04-08
  • 打赏
  • 举报
回复
你再执行sql以前打印一下参数的值,这样:
system.out.println(username+","+psw);
看一看,值传进来没有。

如果有值的话,就手动写一句sql,手动插入到数据库里,看看是不是数据库的问题
我的处理是在javabean里,这个输出应该写到哪,输出到弹出窗口?不好意思,我是个新手,还请大虾多多指教.
mxx123 2008-04-08
  • 打赏
  • 举报
回复
学习
wbk54188 2008-04-08
  • 打赏
  • 举报
回复
还是不对啊,MYSQL里的errmsg.txt里全是乱码,啥也看不出来啊.
yanglei8u8 2008-04-08
  • 打赏
  • 举报
回复
你再执行sql以前打印一下参数的值,这样:
system.out.println(username+","+psw);
看一看,值传进来没有。

如果有值的话,就手动写一句sql,手动插入到数据库里,看看是不是数据库的问题
yanglei8u8 2008-04-08
  • 打赏
  • 举报
回复
老兄,改成这个样子以后,对没有?
wbk54188 2008-04-08
  • 打赏
  • 举报
回复
哦,对了,没有异常信息,只是每次直接执行
if(res == 0)
{
out.println(" <script language=\"JavaScript\" type=\"text/javascript\">alert(\"注册失败!\");window.close(); </script>");
}
这个了.
wbk54188 2008-04-08
  • 打赏
  • 举报
回复
public int register(String username,String psw)
{
String query = "insert into td_pjm_user (username, password) values( username,psw)";
int res=0;
try
{
PreparedStatement ps = this.conn.prepareStatement(query);
ps.setString(1,username);
ps.setString(2,psw);
res = ps.executeUpdate();

}
你的意思是改成这样对吗?
临远 2008-04-08
  • 打赏
  • 举报
回复
异常信息呢?打印出来看看。

另外,你这样用PreparedStatement简直是把好好的东西糟蹋了。
拼字符串又麻烦又危险,应该写成 (?,?)
然后setString(1,useranme)
setString(2,password);

参考我们教程中对这个的解释吧:

http://www.family168.com/tutorial/jdbc/html/jdbc-ch-01.html#jdbc-ch-01-06
wbk54188 2008-04-08
  • 打赏
  • 举报
回复
改了不对,还是弹窗口.数据也没有插入.
wbk54188 2008-04-08
  • 打赏
  • 举报
回复
大家的方法我都试过了,都不行,这是咋回事啊,可能问题不是出在这块了,可是我现在也找不到出错的信息啊,tomcat/logs下的stdout文件都是空的,晕了.System.out.println(user + "::::" + psw); 这句话我输出到哪里了?tomcat的后台?
bobor_2008 2008-04-08
  • 打赏
  • 举报
回复

方法一:

public int register(String username,String psw)
{
String query = "insert into td_pjm_user (username, password) values( '"+username+"','"+psw+"')";
int res=0;
try
{
Statement st = this.conn.createStatement();
st.executeUpdate(query) ;
}
}

方法二:
public int register(String username,String psw)
{
String query = "insert into td_pjm_user (username, password) values( ?,?)";
int res=0;
try
{
PreparedStatement ps = this.conn.prepareStatement(query);
ps.setString(1,username);
ps.setString(2,psw);
res = ps.executeUpdate();
}
}


以上两种方法都可以实现对数据的插入操作.
我只是在你写的基础上作了些修改.
我对你需要注意的地方用红色字标注了.
我想你应该明白了吧.

我是建议你用第一种方法,第一种方法,插入数据安全性比较好.
加载更多回复(1)

62,623

社区成员

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

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