我正在尝试创建一个表,并在同一个程序的同一个表上插入值。创建表并且未完成插入查询。我得到了相同的错误,我改变了我对插入字符串
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(true);
Connection conn;
Statement smt;
ResultSet rs;
String ses_id=(String) session.getAttribute("mailid");
String add=request.getParameter("to_add");
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","password");
smt=conn.createStatement();
System.out.println("connected");
try
{
rs=smt.executeQuery("create table "+add+"_inbox(sender_id varchar(20), subject varchar(20), message varchar(4000))");
System.out.println("created a table");
while(rs.next())
{
smt.executeUpdate("insert into "+add+"_inbox(sender_id,subject,message)"+" values('"+ses_id+"','"+request.getParameter("sub")+"','"+request.getParameter("msg")+"')");
System.out.println("done");
}
}
catch (SQLException e) {
System.out.println("exception");
// TODO Auto-generated catch block
e.printStackTrace();
}
// TODO Auto-generated method stub
} catch (ClassNotFoundException | SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally{}
}
我使用eclipse作为servlet,使用oracle10g作为db。 数据库已连接, 表已创建, 插入查询未完成。
答案 0 :(得分:1)
您没有输入while
循环,因为rs
没有rs.next
个值。
你想在表中插入什么?我看到你要插入一行参数来自HttpSession
和HttpServletRequest
。因此,请删除while(rs.next)
循环。
答案 1 :(得分:0)
因为executeQuery
总是希望会返回一些内容
因此,您可以直接使用execute
方法来创建或更新表。