初步认定是tomcat bug

我怀疑tomcat在处理数据库操作方面有个很大的bug.

在javabean中,对数据库的操作一般做成四种形式:1,选取查询 2,更改 3,删除 4,添加
写程序的过程中出现个意外的情况:我对数据库中一表中某一字段进行选取查询操作之后(并没有对
该字段做什么限制),后面的添加插入数据库的操作就出现问题了。很奇怪的是,它只是禁止String
类型的插入数据库,对于数字类型的就和原来一样。在没有这一操作前,是可以对数据库进行String插入操作的,删掉选取查询操作后一切又都正常。这两个操作之间没有任何影响的地方,语法没有任何毛病.

选取操作用import导入后,用原来javabean中的class名建立了一个新的class,并用它进行选取操作。插入操作用调用javabean,用usebean后,用bean的名称调用,此过程是没有问题的。之所以这样,是怕它们之间有影响。(以上过程都没有问题的,但是相互存在就产生问题)

具体代码如下:

调用的javabean中使用的方法,没有写全,但大家都看得懂,这个是没有问题的.
public void executeUpdate(String sql) {
  try {
   conn = DriverManager.getConnection(url, userName, userPasswd);
   stmt = conn.createStatement();
   stmt.executeUpdate(sql);
   stmt.close();
   conn.close();
  } catch (SQLException ex) {
   System.err.println("aq.executeQuery: " + ex.getMessage());
  }
 }

jsp页面中的代码中核心部分:

String tableName="equipment";
//***********

//当以前的表中有相同的equid时,不执行插入操作,转到报错页面
String sqlcontroll="SELECT * FROM "+tableName+" where "+equid1+" in (select equid from "+tableName+")";
ResultSet rs = sqlbean.executeQuery(sqlcontroll);
while(rs.next())
{

response.sendRedirect("ins_equ_ipf.jsp");

}
rs.close();
sqlbean.closeStmt();
sqlbean.closeConn();

//****************

String sql="INSERT INTO "+tableName+" (equid,equtype,equman,atype,equip,portamo,accounts,epassword) values ('"+equid1+"','"+equtype1+"','"+equman1+"','"+atype1+"',"+equip2+","+portamo2+",'"+accounts1+"','"+epassword1+"')";

sqlbean.executeInsert(sql);


response.sendRedirect("ins_equ_suc.jsp");

//获得数据结果集合

//获得数据结果集合

}

两个//**************中间的代码对下面的代码有很大的影响,限制了equid不能用string类型.但理论上两者根本

没有那样的关系的.

具体代码:

<%@ page contentType="text/html; charset=gb2312" %>

<%@ page language="java" %>

<%@ page import="com.mysql.jdbc.Driver" %>

<%@ page import="god.IP"%>
<%@ page import="java.sql.*" %>
<%@ page session="true" %>
<%@ page import="god.Sql_data"%>
<jsp:useBean id="sqlbean" scope="page" class="god.Sql_data"/>
<jsp:useBean id="ipint" scope="page" class="god.IP"/>
<%
String accounts=(String)session.getAttribute("username");
if(accounts==null||accounts.equals(""))
{
  out.print("您还没登陆,请先登陆!");
}
%>
<%
String accounts1=(String)session.getAttribute("username");

if(request.getParameter("equid")!=null&&!request.getParameter("equid").equals("")){
//驱动程序名
String equid1=request.getParameter("equid");
String equtype1=request.getParameter("equtype");
String equman1=request.getParameter("equman");
String atype1=request.getParameter("atype");
String equip1=request.getParameter("equip");
String portamo1=request.getParameter("portamo");
String epassword1=request.getParameter("epassword");

session.setAttribute("equid",equid1);
session.setAttribute("equtype",equtype1);
session.setAttribute("equman",equman1);
session.setAttribute("atype",atype1);
session.setAttribute("equip",equip1);
session.setAttribute("portamo",portamo1);
session.setAttribute("accounts",accounts1);
session.setAttribute("epassword",epassword1);
long equip2;
int portamo2;
if(equip1!=null&&!equip1.equals("")){
    equip2=ipint.ipToLong(equip1);
}else{
    equip2=0;

}
if(portamo1!=null&&!portamo1.equals("")){
    portamo2=Integer.parseInt(portamo1);
}else{
    portamo2=0;
}

 


//表名

String tableName="equipment";
//当以前的表中有相同的equid时,不执行插入操作,转到报错页面
String sqlcontroll="SELECT * FROM "+tableName+" where "+equid1+" in (select equid from "+tableName+")";
ResultSet rs = sqlbean.executeQuery(sqlcontroll);
while(rs.next())
{

response.sendRedirect("ins_equ_ipf.jsp");

}
rs.close();
sqlbean.closeStmt();
sqlbean.closeConn();

String sql="INSERT INTO "+tableName+" (equid,equtype,equman,atype,equip,portamo,accounts,epassword) values ('"+equid1+"','"+equtype1+"','"+equman1+"','"+atype1+"',"+equip2+","+portamo2+",'"+accounts1+"','"+epassword1+"')";

sqlbean.executeInsert(sql);


response.sendRedirect("ins_equ_suc.jsp");

//获得数据结果集合

//获得数据结果集合

}


%>

<html>
<head>
<title>欢迎进入scams认证计费系统</title>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_callJS(jsStr) { //v2.0
  return eval(jsStr)
}
//-->
</script>
</head>
<body>
<div align="center"><font size="+1"  color=#2b43a7>欢迎进入scams认证计费系统,请填写您要插入的信息</font><br>
</div>
<hr width="100%" noshade="true">
<script language="javascript">
<!--
function DoHide()

 
if(document.form1.atype.value==1)  
{
 document.getElementById("shebei").style.display='block'; 

 document.getElementById("mima").style.display='none';
      
}
else
{
  if(document.form1.atype.value==2)
  {
 document.getElementById("mima").style.display='block';
 document.getElementById("shebei").style.display='none';

  }
  else{
   if(document.form1.atype.value==0)
   {
 document.getElementById("shebei").style.display='none';
 
 document.getElementById("mima").style.display='none';
}
}
 
 
}

}
-->
</script>

<script language="javascript">
<!--

function check_ip(ipaddress) {
if ((ipaddress == "")
|| (address.indexOf ('.') == -1))
{return false;}
return true;
}
function check_empty(text) {
return (text.length > 0);
}

 function checkform(){
       if(document.form1.portamo.value==""){
           alert("端口数为空!");
           return false;
       }     
    if(document.form1.equid.value==""){
           alert("设备ID为空!");
           return false;
       }     
if (document.form1.atype.value==1)
{
if (!check_ip(document.form1.equip.value))
{
 alert("ip地址需要认证,请输入正确格式");
 return false;
 }

}
else if (document.form1.atype.value==2){
if (!check_empty(document.form1.epassword.value))
{  alert("密码需要认证,请输入");
   return false;
}

}
}

-->
</script>

 


<form name="form1" method="post" action="ins_equ.jsp">
  <table width="65%" border="0" cellspacing="1" align="center">
     <TR bgColor="#c9d4ea">
    <TD align=middle colSpan=2 height=18><div align="center"><font color="#2b43a7">添加设备</font></div></TD>
  </TR>
 <tr >
      <td width="147" align="right"><div align="left"><FONT color=#2b43a7>设备ID:</font><br>
        </div></td>
      <td width="346" valign="top"> <input name="equid" type="text" size="32" maxlength="64">
      </td>
    </tr>
    <tr >
      <td width="147" align="right"><div align="left"><FONT color=#2b43a7>端口数:</font><br>
        </div></td>
      <td width="346" valign="top"> <input type="text" name="portamo" size="32" maxlength="64">
      </td>
    </tr>
 <tr>
      <td width="147" align="right"><div align="left"><FONT color=#2b43a7>设备类型</font>:<br>
        </div></td>
      <td width="346" valign="top"> <select name="equtype">
          <option value="0" selected>--GW--</option>
          <option value="1">--terminal--</option>
          <option value="2">--MCU--</option>
        </select> </td>
    </tr>
    <tr>
      <td width="147" align="right"><div align="left"><FONT color=#2b43a7>设备厂商</font>:<br>
        </div></td>
      <td width="346" valign="top"> <select name="equman">
          <option value="0" selected>--先创数字--</option>
          <option value="1">--其他--</option>
        </select> </td>
    </tr>
    <tr id="renzheng">
      <td width="147" align="right"><div align="left"><FONT color=#2b43a7>认证方式:</font><br>
        </div></td>
      <td width="346" valign="top"> <select name="atype" οnchange="javascript:DoHide();">
          <option value="0" selected>--不认证--</option>
          <option value="1">--IP地址认证--</option>
          <option value="2">--密码认证--</option>
        </select> </td>
    </tr>
    <tr  style="display:none" id="mima">
      <td width="147" align="right" ><div align="left"><FONT color=#2b43a7>密码:</font><br>
        </div></td>
      <td width="346" valign="top"><input class=2
                        onKeyDown=onevent() style="IME-MODE: disabled"
                        type=password size="32" maxlength="64" name=epassword></td>
    </tr>
 
 <tr style="display:none" id="shebei">
      <td width="147" align="right"><div align="left"><FONT color=#2b43a7>设备IP:</font><br>
        </div></td>
      <td width="346" valign="top"> <input type="text" name="equip" size="32" maxlength="64">
      </td>
    </tr>
   
    <tr bgColor="#c9d4ea">
      <td width="147" align="right">&nbsp;</td>
      <td width="246" valign="top"> <input type="submit" name="Submint" value="提交" οnclick="javascript:return(checkform());">
        <input type="reset" name="Submit2" value="重写"> </tr>
  </table>
</form>

</body>
</html>

大家有兴趣研究下,如果是我的错误请发邮件:ohrabbit@126.com

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值