当前位置: 首页 > 知识库问答 >
问题:

如何使用Java servlet在给定条件下向表中插入值?

秦鸿羽
2023-03-14

我在做酒店预订项目,我做了两张桌子酒店和房间类型,桌子房间类型有不同类型的房间,现在我在酒店桌子上注册酒店,每个酒店都有不同类型的房间,所以对于那个酒店,我试图用hotel_id作为外键将不同类型的房间插入到单独的桌子房间中。但是我的代码不能用于插入酒店的不同房间类型的数量,在下面的java代码中,首先我注册了酒店,如果成功将酒店的信息插入到酒店中,然后我试图将该酒店的不同房间类型的数量插入到桌子房间类型中,但是没有成功,我在浏览器上得到如下错误

您已成功注册…com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception:您的SQL语法中有一个错误;请查看与您的MySQL服务器版本相对应的手册,以便在第1行“where hotel_id='16'”附近使用正确的语法

**Hotel Table**
CREATE TABLE hotel (
  hotel_id varchar(100) NOT NULL,
  name varchar(100) NOT NULL,
  city varchar(100) NOT NULL,
  address text NOT NULL,
  Locality tinytext NOT NULL,
  PRIMARY KEY (hotel_id)
) 

**RoomType Table**
CREATE TABLE roomtype (
  hotel_id varchar(100) NOT NULL,
  roomtype1 varchar(100) UNIQUE,
  roomtype2 varchar(100) UNIQUE,
  roomtype3 varchar(100) UNIQUE,
  roomtype4 varchar(100) UNIQUE,
  FOREIGN KEY (hotel_id) REFERENCES hotel (hotel_id)
) 

JavaCode

try
    {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/hotelres","root","1234");
        PreparedStatement ps=con.prepareStatement("insert into hotel(hotel_id,name,city,address,Locality ) values('"+hotel_id+"','"+name+"','"+city+"','"+address+"','"+locality+"')");

        //PreparedStatement ps=con.prepareStatement("insert into registeruser(Name, Password) values('"+n+"','"+p+"')");
        int i=ps.executeUpdate();            
        if(i>0){
            out.print("You are successfully registered ...");
            ps=con.prepareStatement("insert into roomtype(hotel_id,roomtype1,roomtype2,roomtype3,roomtype4) values('"+hotel_id+"','"+room_type1+"','"+room_type2+"','"+room_type3+"','"+room_type4+"')where hotel_id="+"'"+hotel_id+"'");
            int j=ps.executeUpdate();
            if(j>0)
               out.print("ou are successfully registered ...\n");  
            else
                out.print("You are not able to registere ...\n");
        }
        else
            out.print("You are not able to registere ...");

共有1个答案

于恺
2023-03-14

不能在insert语句中使用where子句。如果您希望修改hotel id为16的行,那么考虑使用update语句。

旁注-您的SQL易受SQL代码注入的攻击

 类似资料:
  • 每当我的代码运行时,我都试图在csv文件中插入(更新)值。 这里是我的csv文件内容: 当我运行代码时,我只想更新col3中的value3。例如,在我运行脚本后,它会如下所示: 这是我的代码: 但是,它不仅在col3中插入“new_value3”。我是python新手,所以任何想法或建议都会有所帮助。

  • 我正在使用JavaServlet中的javamail api发送邮件。只向gmail Id发送邮件是非常困难的,而我希望它能够发送到任何电子邮件Id。我需要不同的属性值吗?我跟着http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/ 开发代码。属性值为: props.set财产(mail.smtp.

  • 问题内容: 是否有只查询记录的查询,如果不存在,则插入?我不想重复更新或替换。寻找一个查询解决方案,寻找其他答案,但不是我真正想要的。 表: 伪查询: 问题答案: 使用-与INSERT完全相同,不同之处在于,如果表中的旧行与PRIMARY KEY或UNIQUE索引的新行具有相同的值,则在插入新行之前会删除该旧行。 http://dev.mysql.com/doc/refman/5.0/en/rep

  • 问题内容: 我有一个验证并保存表单的视图。保存表单后,我想重定向回list_object视图,并显示一条成功消息“客户xyz的表单已成功更新…” HttpResponseRedirect似乎无法正常工作,因为它只为url提供一个参数,无法与之一起传递字典。 我已经尝试修改object_list的包装,以将dict作为具有必要上下文的参数。我从保存表单的视图内部返回对此包装的调用。但是,呈现页面时,

  • 问题内容: 嗨,我正在尝试将值插入到mysql表中。我正在尝试此代码。我已经为变量分配了值,我想将该变量传递给该插入语句。这样对吗? 这是我尝试过的,但是我无法插入值 问题答案: 试试这个,

  • 我试图在表中插入值,它说的是错误,请告诉我哪里错了,这是我的代码,它说的是请重试 你能指导我吗?我以为问题出在约会上