JSP表单提交数据到MySQL

a448259575 2013-12-04 02:48:50
我这个代码的功能是进入add_text.jsp里面输入内容提交,然后讲提交的内容写入MySQL,请问各位大大为什么这个实现操作[color=#FF0000]只有提交数字才能写入数据库提交英文和中文都不能写入到MySQL里面。SQL里面定义的是两个vachar类型的属性,编码格式都是GBK。[/color]

add_text.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>输入留言信息界面</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript"">
function validate()
{
var Tname = document.forms[0].Tname.value;
var Ttext = document.forms[0].Ttext.value;
//document.getElementById("form").submit();
}
</script>
</head>

<body>
<br>
<center>
<h2>添加留言文本</h2><hr>
<form action="insert.jsp" method="post" id="form" onSubmit="return validate()" >
<h4> 昵称:<input type="text" name="Tname" class="{required:true}"></input><br></h4>
<h4> 留言内容:<input type="text" name="Ttext"></input><br></h4>
<input type="submit" value="提交"/>
</form>
<a href="">查询所有留言</a>
</center>
</body>
</html>


insert.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page import="java.sql.*"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>插入信息</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>
<body>
<%
request.setCharacterEncoding("gbk");
String Tname = request.getParameter("Tname");
String Ttext = request.getParameter("Ttext");
System.out.println(Ttext);
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mldn";
String user = "root";
String password = "root";
try{

conn = DriverManager.getConnection(url, user, password);

stat = conn.createStatement();
String sql = "insert into TextInfo(Tname,Ttext) values(" + Tname + ",'" + Ttext + "')";
stat.executeUpdate(sql);
rs = stat.executeQuery("select * from student"); }

catch(Exception e){}
%>

<center>
<%
try{


if(rs.next())
{
out.print("<br><h3>成功输入!</h3>");
}
else{
out.print("<br><h3>输入失败!</h3>");
}
}
catch(Exception e){}
%>


<br>
<a href=add_text.jsp>返回添加信息页面</a> <a href=showInfo.jsp>进入信息查询页面</a>
</center>
<%
if(rs != null)
{
rs.close();
rs = null;
}
if(stat != null)
{
stat.close();
stat = null;
}
if(conn != null)
{
conn.close();
conn = null;
}
%>
</body>
</html>
...全文
745 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
长笛党希望 2013-12-04
  • 打赏
  • 举报
回复
保证项目的编码和数据库的编码一致就可以了。
a448259575 2013-12-04
  • 打赏
  • 举报
回复
引用 9 楼 herl1988 的回复:
[quote=引用 8 楼 a448259575 的回复:] [quote=引用 7 楼 licip 的回复:] String sql = "insert into TextInfo(Tname,Ttext) values(" + Tname + ",'" + Ttext + "')"; 这个有问题。应该是: String sql = "insert into TextInfo(Tname,Ttext) values('" + Tname + "','" + Ttext + "')";
太感谢了!!真是低级错误啊 再请问下如何解决中文乱码问题呢?[/quote] 试试数据库用UTF-8[/quote] 恩 好的 如果数据库改成UTF-8的话 JSP的page encoding部分也要改的哈?
ottorz 2013-12-04
  • 打赏
  • 举报
回复
引用 8 楼 a448259575 的回复:
[quote=引用 7 楼 licip 的回复:] String sql = "insert into TextInfo(Tname,Ttext) values(" + Tname + ",'" + Ttext + "')"; 这个有问题。应该是: String sql = "insert into TextInfo(Tname,Ttext) values('" + Tname + "','" + Ttext + "')";
太感谢了!!真是低级错误啊 再请问下如何解决中文乱码问题呢?[/quote] 试试数据库用UTF-8
a448259575 2013-12-04
  • 打赏
  • 举报
回复
引用 7 楼 licip 的回复:
String sql = "insert into TextInfo(Tname,Ttext) values(" + Tname + ",'" + Ttext + "')"; 这个有问题。应该是: String sql = "insert into TextInfo(Tname,Ttext) values('" + Tname + "','" + Ttext + "')";
太感谢了!!真是低级错误啊 再请问下如何解决中文乱码问题呢?
licip 2013-12-04
  • 打赏
  • 举报
回复
String sql = "insert into TextInfo(Tname,Ttext) values(" + Tname + ",'" + Ttext + "')"; 这个有问题。应该是: String sql = "insert into TextInfo(Tname,Ttext) values('" + Tname + "','" + Ttext + "')";
a448259575 2013-12-04
  • 打赏
  • 举报
回复
引用 4 楼 defonds 的回复:
既然能看到,你加个断点跟踪一下,看看到底哪里出了问题
刚才详细测试了下 只有当输入Tname这个属性的内容为数字时才能提交到数据库 1.当Tname的内容为数字,Ttext内容为英文时可以提交到数据库并正确显示 2.当Tname的内容为数字,Ttext内容为中文时,数据库中内容为乱码 3.当Tname的内容为非数字时,均无法提交到数据库
a448259575 2013-12-04
  • 打赏
  • 举报
回复
引用 4 楼 defonds 的回复:
既然能看到,你加个断点跟踪一下,看看到底哪里出了问题
小白 刚开始接触开发 还在学习中 不是很会断点调试 不知从何下手 可否更为直观地帮我分析一下bug 谢谢
Defonds 2013-12-04
  • 打赏
  • 举报
回复
既然能看到,你加个断点跟踪一下,看看到底哪里出了问题
a448259575 2013-12-04
  • 打赏
  • 举报
回复
引用 1 楼 defonds 的回复:
中文提交到后台了没
你好,在Eclispe的Console里面可以看到我输入的数据,但是数据库表里面没有
a448259575 2013-12-04
  • 打赏
  • 举报
回复
引用 1 楼 defonds 的回复:
中文提交到后台了没
这个问题的关键之处就是不知道为什么只有提交数字才能写入数据库表,提交英文和中文数据库表里面的内容和提交前没有变化。
Defonds 2013-12-04
  • 打赏
  • 举报
回复
中文提交到后台了没

81,092

社区成员

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

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