DB2数据库中的表在硬盘上的存储位置在哪?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DB2数据库中的表在硬盘上的存储位置在哪?相关的知识,希望对你有一定的参考价值。

我把系统重装了,但是只格式化了C盘,所以其他盘的文件依然存在,重新安装DB2后发现原来建的数据库依然存在,但是数据库中的表却没有了,请问这些数据库原来的表所存放的默认位置在哪?这些表如果没有删除的话我该如何将它们重新加入数据库中?

这个得查,先查数据库的位置,再查表所属的表空间,现查表空间的存储位置,

执行db2cmd
查看本机所有的数据库编目
db2 list db directory
联接数据库
db2 connect to db_name user uid using pwd
查看表空间位置
db2 list tablespaces show detail
重装数据库后,只要原数据的文件没有删除,可以用catalog db 加载机器上原有的数据库,但是只加载一个表空间或一个表我觉得实现不了。追问

但是现在情况就是这么古怪,数据库我已经注册回来了,但是里面自己建的表却一个都没有。
db2 list tablespaces show detail我试了,只能查找当前数据库有哪些表空间,找不到表空间位置,我随便试了个丢失的数据库,里面一共有5个表空间,分别是SYSCATSPACE、TEMPSPACE1、USERSPACE1、SYSTOOLSPACE、SYSTOOLSTMPSPACE。

追答

看样子你列出来的都是数据库默认的表空间,你可以在db2cc(控制中心)看看。

用户表空间为USERSPACE1

追问

谢谢了,不过原因我已经知道了

参考技术A db2 list db directory $disk
$disk 换成你的D:盘或者E:盘,DB2 Windows只允许安装在盘符根目录下,这样就可以查看到盘里是否有数据库,如果发现了catalog一下数据库就回来了追问

数据库已经注册到DB2中,让我奇怪的是为什么里面自己建的表都不见了,DB2自己建的表好像都还有。重装系统前我可以保证绝对没有删过数据库中的表。还有就是为什么只能安在根目录下,我的DB2软件所在地就不是根目录,而存放数据库数据的地方倒是在根目录下,但那是我自己指定的吧?

追答

DB2软件是安装软件,DB2 COPY是一个实例,这两者要明显区分开。
在DB2中的表,都会归属于某个模式Schema,默认就是当前用户,你用之前的用户user1创建的表为user1.table1,重装系统后现在的user2如果要访问table1,必须写完整的表名及user1.table1。输入db2 select current_schema from sysibm.sysdummy1即可查看到当前默认的schema,而如果要查看所有原来的表格,只需要 db2 list tables for schema user1 即可,或者 db2 list tables for all查看所有表

追问

恩,非常感谢,确实是这样!那能不能够将table1的模式修改为当前默认的模式?网上查V9.0有个ADMIN_COPY_SCHEMA,但是里面的参数不是很懂,如果这个功能能够实现我的要求,能不能够麻烦你帮忙把每个参数都解释一下,或者给个有详细解释的链接也可以

追答

http://www.cnblogs.com/lianyonglove/archive/2009/12/07/1618730.html

我倒是没用过,可以试试嘛,试之前,要做好备份

本回答被提问者采纳
参考技术B

我用的SQL Server2008,数据库的工程文件默认保存路径如下如所示(在D盘):

追问

不行,DB2与SQL Server2008不同。

当数据库中的表在java中更新时如何立即更新jcombobox

【中文标题】当数据库中的表在java中更新时如何立即更新jcombobox【英文标题】:how to update the jcombobox immediately when the table in database get updated in java 【发布时间】:2014-05-24 19:49:03 【问题描述】:

我正在开发 java 应用程序。我在应用程序中有两个框架。我想将一个框架中输入的数据反映到另一个框架运行时。

如上图所示,当我在采购窗口的供应商窗口组合框中按下提交按钮时,应立即更新。 我应该进行哪些必要的更改?

这是我在数据库中存储数据的 frame1 代码:

public void btnSubmitAction(ActionEvent e)

    String custId,custNm;

    if(txtSupplierID.getText().equals("") || txtSupplierName.getText().equals("") )
    
        System.out.println("Please enter valid information!!!!!!!");
    
    else
    
        try
            setConnectin();
            String str = "Insert into SupplierMasterTable values(?,?)";
            pstmt = conn.prepareStatement(str);
            pstmt.setString(1,txtSupplierID.getText());
            pstmt.setString(2, txtSupplierName.getText());
            int x = pstmt.executeUpdate();
            System.out.println("Supplier registered successfully");
            txtSupplierID.setText("");
            txtSupplierName.setText("");
            conn.close();
        catch(Exception e1)
            e1.printStackTrace();
        

    


这是我从数据库中获取数据的 frame2 代码:

    JComboBox comboBoxVenderName = new JComboBox();
    comboBoxVenderName.setFont(new Font("Times New Roman", Font.PLAIN, 15));
    comboBoxVenderName.setBounds(144, 88, 137, 21);
    panel.add(comboBoxVenderName);

    try
        setConnectin();
        String str = "select * from SupplierMasterTable";
        stmt = conn.createStatement();
        rs = stmt.executeQuery(str);
        while(rs.next())
        
            comboBoxVenderName.addItem(rs.getString("Supplier_Name"));
        
        conn.close();
    catch(Exception e2)
        e2.printStackTrace();
    

我浏览了以下链接,但没有得到可行的解决方案:

Immediate update to JCombobox in Java

Synchronize a jCombobox with a MySQL Table

【问题讨论】:

【参考方案1】:

JComboBox comboBoxVenderName = new JComboBox();

当您要刷新数据时,不要创建新的组合框。

相反,您应该创建一个新的 DefaultComboBoxModel 并将数据添加到模型中。然后使用以下命令更新现有组合框中的数据:

comboBox.setModel( the updated model );

另外,不要使用空布局!!!您不应该使用 setBounds() 方法。 Swing 旨在与布局管理器一起使用。

【讨论】:

你能简单解释一下吗?我已经尝试使用DefaultComboBoxModel作为第一个链接的参考。但我没有得到想要的结果。请帮助 我确实简要解释了。您将数据添加到模型,然后将模型添加到组合框。发布您的SSCCE(不使用数据库)来证明您的问题。那就是创建一个简单的框架,其中包含一个加载了数据的组合框和一个“刷新”按钮。刷新按钮将简单地将硬编码数据加载到模型中,然后更新组合框。证明基本概念有效。一旦你得到这个刷新方法,你就可以使用你的数据库使方法动态化。

以上是关于DB2数据库中的表在硬盘上的存储位置在哪?的主要内容,如果未能解决你的问题,请参考以下文章

DB2支持的三种表空间SMSDMSDMS的自动存储

DB2联邦数据库及配置方法

DB2 - 如果日期 X 的表为空,则插入,否则继续

尝试使用 Python 连接 DB2 上的表时出错 (SQL0332N)

在哪里可以找到我在 DB2 上的表

如何从 db2 表中删除数百万条记录