jsp插入mysql的小问题

zhangyxl 2008-05-06 03:01:53
String name = request.getParameter("user");
String password = request.getParameter("password");
String sex = request.getParameter("sex");

Connection con = null;
PreparedStatement st = null;
try{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test";
String sql = "insert into users(name,password,sex) values(?,?,?)";
con = DriverManager.getConnection(url,"root","123");
st = con.prepareStatement(sql);
st.setString(1,name);
st.setString(2,password);
st.setString(3,sex);

st.executeUpdate(); //在这里 SQL语句总是插不到mysql里面 帮我看看 我也没写错啊

session.setAttribute("user",name);
response.sendRedirect("index.jsp");

}catch(Exception r){
response.sendRedirect("register.jsp");
}finally{

if(st!=null){
try{st.close();}catch(Exception e){e.printStackTrace();}
}
if(con!=null){
try{con.close();}catch(Exception e){e.printStackTrace();}
}
}
...全文
303 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuan7910 2010-05-29
  • 打赏
  • 举报
回复
受教。。。
wo28lf 2010-05-29
  • 打赏
  • 举报
回复
路过……看看
tdy218 2008-05-08
  • 打赏
  • 举报
回复
你在这下面写3句输出语句,看看到底获取到的各个属性的值是什么。可以减少工作量。
String name = request.getParameter("user");
String password = request.getParameter("password");
String sex = request.getParameter("sex");

out.print("<br>"+name);
out.print("<br>"+password);
out.print("<br>"+sex);

你表单页面中有个单选框(性别的选择),其实表单数据到处理这些数据的页面之间有很多难搞的问题。

我处理含有文件上传的表单信息时坚持了一周(新手,笨),最后终于解决了!~

处理中文乱码问题时用了两天(除了上课时间都在做),在CSDN上提问了至今没有满意的答复。

另外管理数据库可以用一个叫做Navicat for MySQL的图形化管理工具,很好用!~


数据库已经写好了 sex char(1)
那我怎麽改成 sex varchar(10) 呢???用这个工具就轻而易举了。
网上有汉化破解版的,找不到我给你发个。

别的就不敢多说了,就知道这么多。祝楼主好运,早点解决这个问题。
zhangyxl 2008-05-08
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 hifunwong 的回复:]

请把你的代码改成如下的:

...catch(Exception r){

System.out.println(r.toString()) ;

response.sendRedirect("register.jsp");
}finally....

然后登陆一次,把错误信息贴出来....也许不用贴出来你自己也知道原因了..

建议数据库表字段不要用name password 这类名称.
[/Quote]

建议数据库表字段不要用name password 这类名称 为什么???
hifunwong 2008-05-07
  • 打赏
  • 举报
回复

请把你的代码改成如下的:

...catch(Exception r){

System.out.println(r.toString()) ;

response.sendRedirect("register.jsp");
}finally....

然后登陆一次,把错误信息贴出来....也许不用贴出来你自己也知道原因了..

建议数据库表字段不要用name password 这类名称.
focuswe 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 focuswe 的回复:]
我也关注关注
[/Quote]
zhtige 2008-05-06
  • 打赏
  • 举报
回复
关注
zhou_ye 2008-05-06
  • 打赏
  • 举报
回复
没得办法了 只能改数据库了
zhou_ye 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zhangyxl 的回复:]
users表中数据

name varchar(30) not null default '',
password varchar(20) not null default '',
sex char(1) not null default
[/Quote]

'男'字要占两个字节 代码没有错误

sex char(2) not null 。。
dgqbcht 2008-05-06
  • 打赏
  • 举报
回复
你那三个值都是什么,打印出来看下。
zhangyxl 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 loujianchengdd 的回复:]
st.setString(3,sex);
sex="123";你的数据库sex字段长度只有1,当然报错了。你把字段改长些看看吧。
[/Quote]

拜托 我sex什么时候等于123呢??
好好看看题目 123是我数据库密码
badonly 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 loujianchengdd 的回复:]
st.setString(3,sex);
sex="123";你的数据库sex字段长度只有1,当然报错了。你把字段改长些看看吧。
[/Quote]
正解
loujianchengdd 2008-05-06
  • 打赏
  • 举报
回复
st.setString(3,sex);
sex="123";你的数据库sex字段长度只有1,当然报错了。你把字段改长些看看吧。
winer2008 2008-05-06
  • 打赏
  • 举报
回复
sex字段可以用1,0代替
你可以试试这个方法哟st.execute()
zhangyxl 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 qin_07 的回复:]
向数据库插入性别长度超出你定的范围可以不用汉字 ,用1,0代替即可
<td>
<input type="radio" name="sex" value="1" checked>男
 
<input type="radio" name="sex" value="0">女
</td>
[/Quote]

谢谢啊 我就是用这种方法 哈哈
qin_07 2008-05-06
  • 打赏
  • 举报
回复
向数据库插入性别长度超出你定的范围可以不用汉字 ,用1,0代替即可
<td>
<input type="radio" name="sex" value="1" checked>男
 
<input type="radio" name="sex" value="0">女
</td>
zhangyxl 2008-05-06
  • 打赏
  • 举报
回复
sex char(1) not null default '男'
数据库里 我是这样写的

<tr>
<td align="right">性别:</td>
<td>
<input type="radio" name="sex" value="男" checked>男
 
<input type="radio" name="sex" value="女">女
</td>
</tr>
然后获取值String sex = request.getParameter("sex");

-----------------------------------------------------------------------------
但是我创建一个Test.java 就可以插入啊
所以我想应该是我注册的时候 出了错 对把
vsfigo 2008-05-06
  • 打赏
  • 举报
回复
改成char(2)呀 只能插汉字的'男','女'
dgqbcht 2008-05-06
  • 打赏
  • 举报
回复
显然sex字段用char(1)就够了,但是你插入的时候插入的123是超出范围的。
zhangyxl 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 yojiwei 的回复:]
sex 改成 varchar(10)
或者是sex char(10)反正要长一点。一个汉字就占两个字节啦,所以是你设的sex字段长度太短啦
[/Quote]

数据库已经写好了 sex char(1)
那我怎麽改成 sex varchar(10) 呢???
加载更多回复(15)

81,090

社区成员

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

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