java - 连接 MySQL 数据库中的对象

标签 java mysql database

我使用表将对象存储在数据库中,我通过以下方式从对象中检索数据:

String query = "SELECT * FROM Librarian WHERE (id = ?)";
    Account ac = null;
    try {
        state = conn.prepareStatement(query);
        state.setString(1,passport);
        rs = state.executeQuery();

        if(rs.next()) {
            ByteArrayInputStream bais = new ByteArrayInputStream(rs.getBytes("Object"));
            try {
                ObjectInputStream ois = new ObjectInputStream(bais);
                ac = (Account) ois.readObject();

然后我可以访问值,例如 ac.getName 等。 但这只给了我一个对象。在一个表(如下所示)中,我存储了 3 个外键,我想连接 3 个表以从中获取信息,但是每个表都有对象,即我想从这些对象中检索信息,因此我想连接表并获取信息来自对象。

 CREATE TABLE Orders
 (OrderID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
 Passport VARCHAR(20) NOT NULL,
 FOREIGN KEY (Passport) REFERENCES Guest(Passport) ON DELETE CASCADE,
 ISBN INT NOT NULL,
 FOREIGN KEY (ISBN) REFERENCES Books(ISBN) ON DELETE CASCADE,
 LibPassport VARCHAR(20) NOT NULL,
 FOREIGN KEY (LibPassport) REFERENCES Account(LibPassport) ON DELETE CASCADE,
 Object LONGBLOB NOT NULL
 );

如果您需要更多解释或代码,请告诉我。

问候,

最佳答案

我一定是漏掉了什么...

String query = "SELECT * 
                FROM ORDERS O 
                INNER JOIN GUEST G 
                   on O.Passport = G.Passport 
                INNER JOIN Books B 
                   on B.ISBN = O.ISBN 
                WHERE  (O.OrderID = ?)";

假设您只需要所有键都匹配的记录。

如果你想要一个表中的所有记录,并且只需要那些在其他表中匹配的记录,那么你必须使用 LEFT,Right 或 Full 外连接(稍后在 mySQL 中不支持,所以你必须使用左和权利和联合)

关于java - 连接 MySQL 数据库中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36385834/

相关文章:

java - 嵌套 HashMap 无法正常工作

java - 与 ConcurrentSkipListSet 一起正常工作的即时比较器

php - 从日期时间字段(mysql)中仅提取日期并将其分配给 php 变量

mysql - MySQL 触发器中的添加未按预期工作

MySQL 错误代码 : 1030Got error -1 from storage engine; I've tried to delete data from my database

database - 维度建模 : need help doing this star for a university

java - 为什么我的loginService为空?

java - 每个 Java 程序使用哪个网络接口(interface)?

php - 存储多张图像

mysql - 从数据库中获取数据并过滤结果