java.sql.SQLSyntaxErrorException:ORA-01722:无效的数字

时间:2014-04-02 15:35:12

标签: jsp jdbc oracle11g

我正在开发一个应用程序,它包括一个注册页面,我使用的是Oracle数据库..我在jsp中使用jdbc连接后端和前端(html,js和jsp)程序..

这是我的代码:

String fname=request.getParameter("f1");
String uid=request.getParameter("f2");
String email=request.getParameter("f3");
Long phnno=Long.parseLong(request.getParameter("f4"));
String pwd=request.getParameter("f5");
String face=request.getParameter("f7");
String finger=request.getParameter("f9");
out.println(uid);
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","Sindhu","project");
PreparedStatement pst=con.prepareStatement("select * from Shield where uid=?",ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
pst.setString(1,uid);
ResultSet rs=pst.executeQuery();
boolean f=rs.next();
if(f)
{
// some html code
}
else
{
PreparedStatement pst1=con.prepareStatement("insert into shield values(?,?,?,?,?,?,?)");
pst1.setString(1,fname);
pst1.setString(2,uid);
pst1.setString(3,email);
pst1.setLong(4,phnno);
pst1.setString(5,pwd);
pst1.setString(6,face);
pst1.setString(7,finger);
pst1.executeUpdate();
pst1.close();
String TABL = "create table "+uid+" ( "
      + "   site VARCHAR2(30) PRIMARY KEY, u_name VARCHAR2(30) NOT NULL, pass VARCHAR2(30) NOT NULL, "
      + "   url VARCHAR2(30) NOT NULL" + ")";
      Statement stmt = con.createStatement();
      stmt.executeUpdate(TABL);
      stmt.close();
}
rs.close();
pst.close();
con.close();
}
catch(Exception e)
{
out.println(" "+e);
}

我必须检查用户ID是否已存在于Db中,如果不存在,则必须插入详细信息。除此之外,我必须创建一个名称与用户ID相同的表。

以下是Oracle中的表创建语法:

CREATE TABLE Shield
(
f_name varchar2(40),
user_id    varchar2(40) PRIMARY KEY,
email   varchar2(40),
phone  Number(11),
pass_id    varchar2(40),
face    varchar2(40),
finger   varchar2(40)
);

我使用TOMCAT而且我得到了一个例外: java.sql.SQLSyntaxErrorException: ORA-01722: invalid number

即使我将手机字段类型更改为varchar2,我也会收到同样的异常。

我试图直接在oracle工作区中插入什么值,它们正在插入,如果我在jsp中尝试相同,它们不是......

提前谢谢, 娜斯迪胡

0 个答案:

没有答案