[英]getting ORA-01722: invalid number error while inserting form data from webpage
Im getting ORA-01722 error while inserting data from jsp form into the oracle database. 从jsp表单将数据插入到Oracle数据库时,我收到ORA-01722错误。 i know that this error is pointing out to me that i am trying to insert a character string inside a number datatype but the problem is that everything looks to be fine to me but still im getting the error 我知道这个错误向我指出我正在尝试在数字数据类型中插入一个字符串,但问题是一切看起来对我来说都很好,但我仍然收到错误
here is the code i use. 这是我使用的代码。
roomregister.jsp roomregister.jsp
<%
String roomcategory=request.getParameter("category");
if(roomcategory==null)
{
response.sendRedirect("categoryrooms.jsp");
return;
}
//out.println(roomcategory);
%>
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
$(document).ready(
function ()
{
//getRoomsByCategory();
}
);
var roomcategory="<%=roomcategory%>";
/* function f1()
//{
// var nrooms=$("#hdmaxrooms").val()-1;
//alert(nrooms);
}*/
function chooseRoom(roomno)
{
$("#txtroomno").val(roomno);
}
function roombook()
{
var gender="";
if(document.getElementById("txtmale").checked)
gender="Male";
if(document.getElementById("txtfemale").checked)
gender="Female";
if(gender=="")
{
alert("Please select a gender");
return ;
}
var receiptno=$("#txtreceiptno").val();
var name=$("#txtname").val();
var address=$("#txtaddress").val();
var idproof=$("#txtidproof").val();
var dob=$("#txtdob").val();
var contact=$("#txtcontact").val();
var roomno=$("#txtroomno").val();
var fromdate=$("#txtfromdate").val();
var todate=$("#txttodate").val();
var roomcategory=$("#txtroomcategory").val();
var noofguestname=$("#txtnoofguestname").val();
var charge=$("#txtcharge").val();
var purpose=$("#txtpurpose").val();
var bookingamount=$("#txtbookingamount").val();
var url="bookrooms.jsp?receiptno="+ receiptno + "&name=" + name + "&address=" + address + "&idproof=" + idproof + "&dob=" + dob + "&gender="+ gender + "&contact=" + contact + "&roomno="
+ roomno + "&fromdate=" + fromdate +"&todate="+ todate + "&roomcategory=" + roomcategory + "&noofguestname=" + noofguestname +
"&charge=" + charge + "&purpose=" + purpose + "&bookingamount=" + bookingamount;
var xhr=new XMLHttpRequest();
xhr.open("GET",url,true);
xhr.onreadystatechange=function (){roomBookResponse(xhr);};
xhr.send();
//alert(url);
}
function roomBookResponse(xhr)
{
if(xhr.readyState!=4)
return ;
//getRoomsByCategory();
$("#diverrors").html(xhr.responseText);
// alert("xZXZX" + xhr.responseText);
}
function getroom()
{
var fromdate =$("#txtfromdate").val();
var todate =$("#txttodate").val();
var url="roomsforbooking.jsp?fromdate="+ fromdate + "&todate=" + todate + "&category=" + roomcategory ;
//alert(url);
var xhr=new XMLHttpRequest();
xhr.open("GET",url,true);
xhr.onreadystatechange=function (){getRoomResponse(xhr);};
xhr.send();
//alert(url);
}
function getRoomResponse(xhr)
{
if(xhr.readyState!=4)
return ;
// getRoomsByCategory();
$("#diverrors").html(xhr.responseText);
// alert("xZXZX" + xhr.responseText);
}
</script>
<font color="white">
<div id="divroomsbycategory"></div>
<div id="image" class="image">
<center>
<table class="divcenter" width="60%" border="0">
<tr><td colspan="2" align="center">ROOM BOOKING</td></tr>
<tr><td colspan="2" align="center"> <div id="diverrors"></div> </td></tr>
<tr><td><BR>Receipt_No</td><td><BR><input type="text" id="txtreceiptno"/></td></tr>
<tr><td>Name</td><td><input type="text" id="txtname"/></td></tr>
<tr><td>Address</td><td><input type="text" id="txtaddress"/></td></tr>
<tr><td>Id_Proof</td><td><input type="text" id="txtidproof"/></td></tr>
<tr><td>Date_of_Birth</td><td><input type="text" id="txtdob"/></td></tr>
<tr><td>Gender</td><td>Male<input type="radio" id="txtmale" value="male" name="gender"/>
Female<input type="radio" id="txtfemale" value="female" name="gender"/></td></tr>
<tr><td>Contact</td><td><input type="text" id="txtcontact"/></td></tr>
<tr><td> Room_No</td><td>
<input type="text" id="txtroomno" readonly="readonly"/>
 
<input type="button" value="GET" onclick="getroom();" class="divbutton"/></td></tr>
<tr><td>From_Date</td><td><input type="text" id="txtfromdate"/></td></tr>
<tr><td>TO-date</td><td><input type="text" id="txttodate"/></td></tr>
<tr><td>Room_Category</td><td><input type="text" id="txtroomcategory" readonly="readonly" value="<%=roomcategory%>"/></td></tr>
<tr><td>No_Of_Guest</td><td><input type="text" id="txtnoofguestname"/></td></tr>
<tr><td>Charge</td><td><input type="text" id="txtcharge"/></td></tr>
<tr><td>Purpose</td><td><input type="text" id="txtpurpose"/></td></tr>
<tr><td>Booking-Amount</td><td><input type="text" id="txtbookingamount"/></td></tr>
<tr><td colspan="2" align="center"><BR><input type="button" value="SUBMIT" onclick="roombook();" class="divbutton"/></td></tr>
<tr><td colspan="2" align="center"><div id="divroomsbycategory"></div></td></tr>
</table>
</center>
</div>
</font>
<style>
.divbutton:hover
{
border: solid white;
background-color: seagreen;
}
.divcenter:hover
{
border: solid;
border-top-color: white;
border-bottom-color: white;
border-left-color: white;
border-right-color: white;
}
.image
{
width: 100%;
height: 600px;
background-image: url("images/332.jpg");
}
</style>
bookrooms.jsp bookrooms.jsp
<%@page import="utilitiespackage.Date"%>
<%@page import="java.sql.Connection"%>
<%@page import="dbpackage.DBConnector"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="validationspackage.Validations"%>
<%
try
{
String receiptno=request.getParameter("receiptno");
String name=request.getParameter("name");
String address=request.getParameter("address");
String idproof=request.getParameter("idproof");
String dob=request.getParameter("dob");
String gender=request.getParameter("gender");
String contact=request.getParameter("contact");
String roomno=request.getParameter("roomno");
String fromdate=request.getParameter("fromdate");
String todate=request.getParameter("todate");
String roomcategory=request.getParameter("roomcategory");
String noofguestname=request.getParameter("noofguestname");
String charge=request.getParameter("charge");
String purpose=request.getParameter("purpose");
String bookingamount=request.getParameter("bookingamount");
//Connection con=DBConnector.getConnection(session);
PreparedStatement ps=DBConnector.getPreparedStatement(session, "insert into roomregister values ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
ps.setString(1,receiptno);
ps.setString(2,name);
ps.setString(3,address);
ps.setString(4,idproof);
ps.setString(5,contact);
ps.setString(6,roomno);
ps.setString(7,fromdate);
ps.setString(8,roomcategory);
ps.setString(9,noofguestname);
ps.setString(10,charge);
ps.setString(11,purpose);
ps.setString(12,gender);
ps.setString(13,dob);
ps.setString(14,bookingamount);
Date d1=new Date(fromdate);
Date d2=new Date(todate);
for(;Date.compare(d1, d2)<0;d1.advance())
{
ps.setString(6, "" + d1);
ps.executeUpdate();
}
out.println(Validations.setSuccess("Booked"));
//String message=Validations.setSuccess("deleted");
//out.println(message);
}
catch(Exception ex)
{
System.out.println(ex);
out.println(Validations.setError(ex));
}
%>
my database table: 我的数据库表:
ps.setString(1,receiptno);
isn't that a "number" field and you are calling setString? 那不是一个“数字”字段,您正在调用setString吗?
The documentation for java.sql.PreparedStatement
has this to say: java.sql.PreparedStatement
的文档说:
Note: The setter methods (setShort, setString, and so on) for setting IN parameter values must specify types that are compatible with the defined SQL type of the input parameter. 注意:用于设置IN参数值的setter方法(setShort,setString等)必须指定与输入参数的已定义SQL类型兼容的类型。 For instance, if the IN parameter has SQL type INTEGER, then the method setInt should be used. 例如,如果IN参数的SQL类型为INTEGER,则应使用setInt方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.