用jsp往数据库里插入数据时。总是会插入一行空值。求解!

chensizheng 2012-05-03 10:56:21

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page contentType="text/html; charset=GB2312" import="java.sql.*"
errorPage=""%>

<script type="text/javascript">

var xmlHttp; //创建XMLHttpRequest对象
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
}

function validate(){ //向服务器发送数据
createXMLHttpRequest();

var mailname = document.getElementById("mailname").value;
var nickname = document.getElementById("nickname").value;
var password = document.getElementById("password").value;
var sex = document.getElementById("sex").value;
var realname = document.getElementById("realname").value;
var shenID = document.getElementById("shenID").value;
var address = document.getElementById("address").value;
var str = "&mailname="+mailname+"&nicename="+nickname+"&password="+password+"&sex="+sex+"&realname="+realname+"&shenID="+shenID+"&address="+address;

var url = "innerNewUserSql.jsp";
xmlHttp.open("POST",url,true);
xmlHttp.onreadystatechange=callback;
xmlHttp.setRequestHeader("Connect-type","application/x-www-form-urlencode-d");
xmlHttp.send(str);
}

function callback(){
if(xmlHttp.readyState==4){
var s = xmlHttp.responceText;
if(trim1(s)=="1"){
alert("用户注册成功,即将跳转到登录首页");
}else{
clear();
}
}
}

function clear(){
document.getElementById("mailname").value="";
document.getElementById("nickname").value="";
document.getElementById("password").value="";
document.getElementById("sex").value="";
document.getElementById("realname").value="";
document.getElementById("shenID").value="";
document.getElementById("address").value="";
}

//下面是一些验证输入的信息是否合法的js代码,不列出了


function reg(){
if (form_validate()==false)
return;
validate();
document.form1.submit();
}


</script>

<html>
<head>


<title>【新用户注册】</title>

</head>

<body>
<hr>
<h1 align="center">
新用户注册
</h1>
<hr>
<div align="center">
<!--fuen 内容框-->
<form name="form1" action="innerNewUserSql.jsp" method="post">
// innerNewUserSql.jsp 是1楼列出的jsp
<table width="65%">

<tr>

<td width="26%">
<em style="color: red">*</em>注册邮箱:
</td>
<td>
<input name="mailname" id="mailname" onblur="clearDiv()">
(作为登录名称)
</td>
<tr>

<td width="26%">
<em style="color: red">*</em>创建昵称:
</td>
<td>
<input name="nickname" id="nickname" onblur="clearDiv()">
(汉字、字母或数字,长度为1~20字符)
</td>
<tr>
<td width="26%">
<em style="color: red">*</em>创建密码:
</td>
<td>
<input type="password" name="password" id="password" onblur="clearDiv()">
(由数字和字母(区分大小写)和下划线组成,长度6~16)
</td>
</tr>
<tr>
<td width="26%">
<em style="color: red">*</em>确认密码:
</td>
<td>
<input type="password" name="password2" id="password2" onblur="clearDiv()">
(请与初始密码填写一致)
</td>
</tr>
<tr>
<td width="26%">
  性    别:
</td>
<td>
<input type="radio" name="sex" value="M" id="sex"
checked="checked">
男 .
<input type="radio" name="sex" value="F" id="sex">

</td>
<tr>
<td width="26%">
<em style="color: red">*</em>真实姓名:
</td>
<td>
<input name="realname" id="realname" onblur="clearDiv()">
</td>
<tr>
<td width="26%">
<em style="color: red">*</em>身份证号码:
</td>
<td>
<input name="shenID" id="shenID" onblur="clearDiv()">
(仅作为找回帐号依据,请如实填写)
</td>
<tr>
<td width="26%">
<em style="color: red">*</em>确认身份证号码:
</td>
<td>
<input name="shenID2" id="shenID2" onblur="clearDiv()">
</td>
</tr>
<tr>
<td width="26%">
  住    址:
</td>
<td>
<input name="address" id="address">
</td>
</tr>
<tr>
<td>
</td>
<td align="center">
<input type="reset" value="重新填写" />
</td>
</tr>
</table>

<br>
<div align="center" style="color: red; font: 15">
以上所有带 * 的内容为必须填写的项目
</div>
<br>
<br>
<div align="center">
<input type="button" value="立刻注册" style="font: 20" onclick="reg()">
</div>
</form>
</div>
</body>
</html>

...全文
374 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ycproc 2012-05-06
  • 打赏
  • 举报
回复

建议直接检查这一段后台方法被执行了几次
  • 打赏
  • 举报
回复
空行出现在什么位置?
sunylf 2012-05-05
  • 打赏
  • 举报
回复
又學了一招,System.Out.Print(sql);
bree06 2012-05-03
  • 打赏
  • 举报
回复
你在[数据库通用模块]的代码中写一个固定的
insert into Info(注册邮箱,昵称,密码,性别,真实姓名,身份证号码,地址) values ('1', '1', '1', '1', '1', '1', '1'),独立运行测试一下,看看是否有空行,这样可以确定是前台取值的问题还是后台插数据的有问题
底层码农老陈 2012-05-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
你打印输出看看参数有没有在jsp中获取到,如果你用get方法提交,你的提交的参数不能太长。如果有很长的参数,建议你用:post方法。
[/Quote]


已经正确插入一行了、问题是 多插入了一行空行! 而且是表里设置的主键也是null值、、、
底层码农老陈 2012-05-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
你打印输出看看参数有没有在jsp中获取到,如果你用get方法提交,你的提交的参数不能太长。如果有很长的参数,建议你用:post方法。
[/Quote]


已经正确插入一行了、问题是 多插入了一行空行!
licip 2012-05-03
  • 打赏
  • 举报
回复
你打印输出看看参数有没有在jsp中获取到,如果你用get方法提交,你的提交的参数不能太长。如果有很长的参数,建议你用:post方法。
底层码农老陈 2012-05-03
  • 打赏
  • 举报
回复
数据库通用模块

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.SQLException"%>
<%!Connection con = null;
Statement stmt = null;
ResultSet rs = null;

public void jspInit() { //建立数据库连接
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1522:CHEN", "SYSTEM",
"a123123");
stmt = con.createStatement();
} catch (Exception e1) {
System.out.println(e1.toString());
}
}

public void Exec(String sql) { //执行一个SQL语句
jspInit();
try {
stmt.executeUpdate(sql);
} catch (Exception e) {
System.out.println(e.toString());
}
}


public String getS(String Str) { //进行文字符的乱码处理
try {
byte b[] = Str.getBytes("ISO-8859-1");
Str = new String(b);
} catch (Exception ee) {
ee.printStackTrace();
}
return Str;

}%>


底层码农老陈 2012-05-03
  • 打赏
  • 举报
回复
给出对数据库操作的jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page contentType="text/html; charset=GB2312" import="java.sql.*"
errorPage=""%>
<%@ include file="Conn.jsp"%>
<%
String mailname = request.getParameter("mailname");
String nickname = request.getParameter("nickname");
String password = request.getParameter("password");
String sex = request.getParameter("sex");
String realname = request.getParameter("realname");
String shenID = request.getParameter("shenID");
String address = request.getParameter("address");

//乱码处理
nickname = getS(nickname);
realname = getS(realname);
address = getS(address);

//插入新用户的sql操作
String sql = "insert into Info(注册邮箱,昵称,密码,性别,真实姓名,身份证号码,地址) values('"
+ mailname
+ "','"
+ nickname
+ "','"
+ password
+ "','"
+ sex
+ "','"
+ realname
+ "','"
+ shenID
+ "','"
+ address
+ "')";
try{
Exec(sql);
}catch(Exception e)
{ e.printStackTrace(); }
%>
bree06 2012-05-03
  • 打赏
  • 举报
回复
如果可以正常插入的话那只可能是[数据库操作的jsp]的问题了。
在String sql = "insert into Info(注册邮箱,昵称,密码,性别,真实姓名,身份证号码,地址) values('"
+ mailname
+ "','"
+ nickname
+ "','"
+ password
+ "','"
+ sex
+ "','"
+ realname
+ "','"
+ shenID
+ "','"
+ address
+ "')";
这个后面加一个System.out.print(sql);监视一下sql 是什么。
底层码农老陈 2012-05-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
你在[数据库通用模块]的代码中写一个固定的
insert into Info(注册邮箱,昵称,密码,性别,真实姓名,身份证号码,地址) values ('1', '1', '1', '1', '1', '1', '1'),独立运行测试一下,看看是否有空行,这样可以确定是前台取值的问题还是后台插数据的有问题
[/Quote]


这样是可以正常插入到数据库里面的。。

那我的问题出现在哪里呢? 就是插入的时候,插入了一条新的数据的同时,插入了一行空数据、、
底层码农老陈 2012-05-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
你在[数据库通用模块]的代码中写一个固定的
insert into Info(注册邮箱,昵称,密码,性别,真实姓名,身份证号码,地址) values ('1', '1', '1', '1', '1', '1', '1'),独立运行测试一下,看看是否有空行,这样可以确定是前台取值的问题还是后台插数据的有问题
[/Quote]


这样是可以正常插入到数据库里面的。。那我的问题出现在哪里呢?

52,782

社区成员

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

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