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

用Java控制数据库中的数据

白昊乾
2023-03-14
try {

    Class.forName("com.mysql.cj.jdbc.Driver");
    //  out.println("driver loaded");
    Connection  con = DriverManager.getConnection("jdbc:mysql://localhost:3306/Hotel?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC", "root", "123456789");
    out.println("Connect");
    Statement  st = con.createStatement();
    Statement stmt = con.createStatement();
    out.println("connection successfull");

    String check = ("SELECT res1.id_prenotazione, res1.typeroom, res1.arrivaldate, res1.departuredate\n" +
        "FROM reservation res1, reservation res2\n" +
        "WHERE ( res1.typeroom = res2.typeroom ) \n" +
        "AND res1.id_prenotazione != res2.id_prenotazione\n" +
        "AND (res1.arrivaldate <= res2.departuredate)\n" +
        "AND (res2.arrivaldate <= res1.departuredate)");


    // ResultSet rs2  = stmt.executeQuery(check);
    out.println("<h1> Stringa chek eseguita </h1>");

    if (check) { // THIS DOESN't WORK OF COURSE
        int rs = st.executeUpdate("insert into reservation (login,email,typeroom,numroom,arrivaldate,departuredate)values ('" + login + "','" + email + "','" + typeroom + "','" + numroom + "','" + arrivaldate + "','" + departuredate + "')");
    }
    String getResultSet = ("SELECT count(*) FROM reservation WHERE arrivaldate ='" + arrivaldate + "'");
    String rs1 = ("SELECT count(*) FROM reservation WHERE arrivaldate");


    if (getResultSet != rs1) {
        int i = st.executeUpdate("DELETE FROM reservation WHERE id_prenotazione ='" + id_prenotazione + "'");

    } 

共有1个答案

刁远
2023-03-14

您在check SELECT中使用了同一个表的联接,但还没有插入任何内容,因此查询毫无意义。您需要对照要存储的保留的值进行检查。

SELECT COUNT(*) 
FROM reservation 
WHERE numroom = $roomnumber -- I am guessing numroom is room number
  AND ($startdate >= arrivaldate AND $startdate <= departuredate)
   OR ($enddate >= arrivaldate AND $enddate <= departuredate)

用您的值替换变量($...)。您可能希望了解如何相互验证日期,在比较中可能应该是<、>而不是<=、>=

在Java中,这将是

String query = "SELECT COUNT(*) FROM reservation WHERE numroom = '" + numroom + "' AND ('" + arrivaldate + "' >= arrivaldate AND '" + arrivaldate + "' <= departuredate) OR ('" + departuredate + "' >= arrivaldate AND '" + departuredate + "' <= departuredate)
 类似资料:
  • 15.3 控制数据库连接 15.3.1 DataSource Spring用DataSource来保持与数据库的连接。DataSource是JDBC规范的一部分同时是一种通用的连接工厂。它使得框架或者容器对应用代码屏蔽连接池或者事务管理等底层逻辑。作为开发者,你无需知道连接数据库的底层逻辑;这只是创建datasource的管理员该负责的模块。在开发测试过程中你可能需要同时扮演双重角色,但最终上线时

  • 12.3. 控制数据库连接 12.3.1. DataSourceUtils类 DataSourceUtils作为一个帮助类提供易用且强大的数据库访问能力, 我们可以使用该类提供的静态方法从JNDI获取数据库连接以及在必要的时候关闭之。 它提供支持线程绑定的数据库连接(比如使用DataSourceTransactionManager 的时候,将把数据库连接绑定到当前的线程上)。 注:getDataS

  • 但是,应用程序的用法似乎并不符合标准的JPA方法,即在对象的每次更改时进行更新。 应用程序的使用情况是,每次只有几百个对象处于活动状态,但每秒更新几次。 虽然应用程序在内存中有对象,但不需要在数据库中不断更新它们,这将是无用的IO。

  • 当我试图删除或编辑实时数据库中的节点时,我总是得到这样的信息:我必须选择一个元素较少的键来更改某些内容,否则它是只读的。 但是当我单击低级节点时,没有任何反应。因此,我实际上可以从控制台:( 一周前,我没有看到这个警告,一切都很好!知道如何回到工作版本吗? 我也觉得德语翻译的不太好,因为它告诉我应该激活另一种模式。用英语说,模式被激活。

  • 我已经使用 使用数据源连接数据库,但我们有50多个数据库。所以我想动态连接数据库。请帮帮我.

  • 本文向大家介绍asp控制xml数据库的经典代码,包括了asp控制xml数据库的经典代码的使用技巧和注意事项,需要的朋友参考一下 NO.1--建立一个XML数据库data.xml NO.2--建立对象CreateObject 建立data.xml的对象先 NO.3--选定节点SelectNode 你想操作哪个Node,必须定位到这个节点是不是,先看看这个data.xml有几个Node?? 用一个递归