我正在开发一个应用程序,它包括一个注册页面,我使用的是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中尝试相同,它们不是......
提前谢谢, 娜斯迪胡