使用NetBeans将GUI连接到Derby数据库

2024-01-18 02:38

本文主要是介绍使用NetBeans将GUI连接到Derby数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本教程指导您如何将名为 ContactEditor 的应用程序的 GUI 连接到 Derby 数据库。在此过程中,您将向 GUI 添加数据敏感的 JDBC 组件,使该程序能够与雇员数据库交互。

在本教程中,您将学会如何:

l      使用 GUI Builder 界面

l      连接两个 GUI 窗口

l      添加和编辑 JDBCRowSet

l      添加数据模型

l      GUI 连接到 Derby 数据库

l      将数据绑定到 UI 组件

l      UI 组件连接到应用程序逻辑

本教程大约需要 30 分钟完成。

请注意本教程引用了名为 GUI DB Exercise Initial 的项目作为样例,供您在使用这些步骤时参考。另请注意,归档文件中的 GUI DB Exercise Final 项目显示了完成的应用程序。

入门
GUI Builder Quickstart 教程中,我们致力于为 ContactEditorUI.java 应用程序构建名为 ContactEditorUI 的对话框。在本教程中,我们将以前创建的 ContactEditorUI GUI 窗体和该应用程序 UI 的主(父)窗口都连接到 Derby 数据库。请注意,尽管本教程中的图片说明的是 Macintosh OS-X 上的过程,但在其他支持平台(如 Windows Solaris)上,步骤几乎相同。

要成功完成本教程,您必须已经安装并正在运行 IDE 包含的 Derby 数据库服务器。请注意,到 NetBeans IDE 5.5 Beta 版时,包含的数据库就不再叫作 Derby 了,而是被称为 Java DB。您还需要将包含在样例项目中的必要的支持类(在 Project 窗口中可见)编译进项目。有关安装和配置 Derby 以用于 NetBeans 的更多信息,请参见 NetBeans Derby tutorial

最后,您还必须已经创建了 contact_database 并将 User Name Password 设置为 nbuser。还要向数据库添加必要的字段,添加的方法是使用 Create Table UI 或执行以下 SQL 语句:

    CREATE TABLE "CONTACTS"
    (
    "ID" INTEGER not null primary key,
    "FIRST_NAME" VARCHAR(50),
    "LAST_NAME" VARCHAR(50),
    "TITLE" VARCHAR(50),
    "NICKNAME" VARCHAR(50),
    "DISPLAY_FORMAT" SMALLINT,
    "MAIL_FORMAT" SMALLINT,
    "EMAIL_ADDRESSES" VARCHAR(1000)
    )
    

请注意,如果您使用 SQL 命令而不是 Create Table UI 创建表,要看到 Contacts 表,您需要在 Runtime 窗口刷新 Tables 节点。

注意:要成功完成本教程,您必须在 JDK 5 上运行 NetBeans IDE 5.0

添加数据模型


因为应用程序主窗口 GUI 已经准备妥当,我们可以直接跳到添加数据敏感组件这一步,它使我们能够与数据库中的数据交互。在本部分,我们将添加数据模型以确保数据在正确的窗体中向 UI 显示。

添加 JDBCRowSet

因为我们需要的 JDBCRowSet 已经包含在 GUI DB 示例项目中,我们只需将它添加到应用程序 GUI 中即可。而包含的 RowSets 已经有了 BeanInfos,所以我们可以像使用 IDE 中的其他组件一样使用它们,在 Properties 窗口中显示它们的属性。因为只打算使用这个类一次,所以不需要为了将它添加到窗体而将 JDBCRowSet 安装到 Palette。但是如果想重复使用某个类,这样做就很有价值了,我们为了节省时间和精力只是复制粘贴它。

添加 JDBCRowSet 到窗体:

1.       Projects 窗口中,右键单击 JDBCRowSet.java 节点并从弹出菜单中选择 Copy

2.       将它粘贴到设计区域的任意位置。

IDE JDBCRowSet 添加到窗体并且表示行设置的节点出现在 Inspector 窗口中。

请注意,Inspector 窗口中的节点是在 Other Components 节点内添加的。如果在试图粘贴行设置时收到错误消息,则编译项目,然后再试。

设置 JDBCRowSet 的属性

现在需要编辑 JDBCRowSet 属性,这样它就能引用我们先前创建的 Contacts 数据库了。还需要设置驱动程序及其使用的路径并提供它进行连接时需要的密码和用户名。

编辑 JDBCRowSet 的属性:

1.       Inspector 窗口(不是 Projects 窗口)中选择 JDBCRowSet1 节点。

2.       Properties 窗口中,为命令属性输入 select * from contacts

3.       为驱动程序属性输入 org.apache.derby.jdbc.ClientDriver

4.       url 属性输入 jdbc:derby://localhost:1527/contact_database

5.       为密码属性输入 nbuser

6.       为用户名属性输入 nbuser

添加数据模型

现在我们需要添加数据模型,它将成为应用程序与数据库之间的一层,并封装数据访问,为访问和修改数据提供逻辑。示例项目中再次提供了必要的 ContactsModel 类,所以我们只需将它添加到应用程序。包含这样一个类可以在不迫使 GUI 发生变化的情况下更改数据模型。

向窗体添加数据模型:

1.       Projects 窗口中,右键单击 ContactsModel.java 节点并从弹出菜单中选择 Copy

2.       将它粘贴到设计区域的任意位置。

IDE ContactModel 添加到窗体并且表示行设置的节点出现在 Inspector 窗口中的 Other Components 节点内。

改变数据模型的变量名:

1.       Inspector 窗口中,右键单击 contactsModel1 节点并从弹出菜单中选择 Change Variable Name

2.       在显示的 Rename 对话框中,输入新变量名 contactsModel 并单击 OK

设置数据模型的 rowSet 属性:

1.       Inspector 窗口中,选择 contactsModel 节点。

2.       Properties 窗口中,单击 rowSet 属性的省略号按钮 (...)

3.       在显示的编辑器中,选择 Get Parameter From 窗格中的 Bean 单选按钮。

4.       Select Bean 组合框中,选择 jDBCRowSet1

5.       单击 OK 退出对话框。

IDE 设置窗体的 contactsModel 数据模型以使用 jDBCRowSet

将数据库绑定到 UI


为了让 GUI 与存储在数据库中的联系人信息交互,需要将数据绑定到组件,这样才能显示这些数据并允许用户与它进行交互。在本部分,我们开始将 GUI 连接到 JDBC 组件,启用与数据库的交互。

设置 JTable RowSet 模型

为了使 GUI JTable 能够正确显示联系人数据,我们需要设置它以使用提供的 RowSetTableModel 类。还需要将 RowSetTableModel 指向先前添加的 JDBCRowSet,使它能够向 JTable 自身转发列信息和数据。最后,我们将编辑 rowSetTableModel1 实例,仅让那些我们想显示的列在 GUI 主窗口中可见。

向窗体添加 RowSetTableModel

1.       Projects 窗口中,右键单击 RowSetTableModel.java 节点并从弹出菜单中选择 Copy

2.       将它粘贴到设计区域的任意位置。

设置表模块的 rowSet 属性:

1.       Inspector 中,选择 rowSetTableModel1 节点。

2.       Properties 窗口中,单击省略号按钮 (...) 打开 rowSet 属性编辑器。

3.       Get Parameter From 窗格中,选择 Bean 单选按钮。

4.       Select Bean 组合框中,选择 jDBCRowSet1

5.       单击 OK 退出对话框。.

设置 JTable 的模型属性:

1.       Inspector 中,选择 JTable。请注意,当您在窗体中选择 JTable 时,JScrollPane 组件在 Inspector 窗口中被高亮显示并且可以在 Properties 窗口中编辑其属性(不是 JTable 的属性)。

2.       Properties 窗口中,单击省略号按钮 (...) 打开模型属性的编辑器。

3.       在显示的模型编辑器中,在 Select Mode 组合框中选择 Form Connection

4.       选择 Bean 单选按钮并在 Component 组合框中选择 rowSetTableModel1

5.       单击 OK 关闭编辑器。

要决定表的哪些列在运行时可见,需要明确设置它们。为此,我们需要调整 rowSetTableModel1 的属性。

设置表列的可见性:

1.       Inspector 中,选择 rowSetTableModel1 节点。

2.       Properties 窗口中,单击省略号按钮 (...) 打开 visibleColumns 属性编辑器。

3.       在显示的编辑器中,在 Item 字段输入以下列名,每次输入一个并单击 Add

m         NICKNAME

m         FIRST_NAME

m         LAST_NAME

4.       单击 OK 退出对话框。.

IDE 设置窗体的 JTable 以显示指定的列,并且列标题按它们被添加的顺序出现在窗体中。

设置主窗口关闭行为

在应用程序窗口关闭时,要释放驻留在模型中的各种资源,我们还需要明确指定预期的行为。在本部分,我们将为应用程序主窗口和 Details 对话框,设置控制此行为的事件动作。

为主窗口 Close 按钮编辑事件动作:

1.       右键单击 Close 按钮并选择 Events > Action > actionPerformed

2.       在源编辑器中,选择光标所在的行(它应显示为 //TODO add your handling code here),在 editContactActionPerformed 方法主体中添加以下代码:


    contactsModel.dispose(); // releases resources held by the model (like DB connection)
    System.exit(0);  // exists the application

3.       单击 Design 按钮,返回 GUI Builder

为主窗口编辑事件动作:

1.       Inspector 中,右键单击 JFrame 容器并选择 Events > Window >windowClosing

2.       在源编辑器中,选择光标所在的行。然后添加以下代码:

    contactsModel.dispose(); // releases resources held by the model (like DB connection)
    System.exit(0);  // exists the application

3.       再次单击 Design 按钮,返回 GUI Builder

添加按钮事件处理程序

为了使主窗口中的各种按钮引起预期的行为,必须给它们设置动作。本部分正是要完成这一工作,通过定义它们必需的事件处理程序触发相应的事件。

Edit 按钮添加事件处理程序:

1.       右键单击 Edit 按钮并选择 Events > Action > actionPerformed

2.       在源编辑器中,选择光标所在的行。然后添加以下代码:

3.       将以下方法添加到 contactEditor 类主体的代码中(在或大约在 346 行)。

private void showDetailDialog(boolean inserting) {
    contactsModel.setInsertMode(inserting);
    firstNameField.setText(contactsModel.getFirstName());
    lastNameField.setText(contactsModel.getLastName());
    titleField.setText(contactsModel.getTitle());
    nicknameField.setText(contactsModel.getNickname());
    displayFormat.setSelectedIndex(contactsModel.getDisplayFormat());
    emailField.setText("");
    switch (contactsModel.getMailFormat()) {
    case 0: htmlChoice.setSelected(true); break;
    case 1: plainTextChoice.setSelected(true); break;
    case 2: customChoice.setSelected(true); break;
    }
    javax.swing.DefaultListModel listModel = new javax.swing.DefaultListModel();
    Object[] mails = contactsModel.getEmails();
    for (int i=0; i
    emailsList.setModel(listModel);
    details.pack();
    details.setVisible(true);
}

IDE Edit 按钮添加侦听器使该按钮能够在单击时与 contactsModel 和数据库交互,

Add 按钮添加事件处理程序:

1.       右键单击 Add 按钮并选择 Events > Action > actionPerformed

2.       在源编辑器中,选择光标所在的行。然后添加以下代码:


   showDetailDialog(true);

                

Remove 按钮添加事件处理程序:

1.       右键单击 Remove 按钮并选择 Events > Action > actionPerformed

2.       在源编辑器中,选择光标所在的行。然后添加以下代码:



    contactsModel.removeContact();

              
设置表的选择模型

现在是设置表的选择模型的时候了,它将侦听模型中属性的更改并决定是否可以对选定的联系人进行编辑。请注意,对于本教程,ContactsModel 实现允许编辑或删除任何选定的联系人。

设置表的选择模型:

1.       Inspector 窗口中,展开 JScrollPane1 节点并选择 JTable

2.       Properties 窗口中,单击 selectionModel 属性的省略号按钮。

3.       在显示的编辑器中,选择 Property 单选按钮并单击省略号按钮。

4.       在打开的 Select Property 对话框中,在组合框中选择 contactsModel。然后选择 Properties 窗格中的 contactSelection

5.       单击 OK 退出对话框。

contactsModel Edit Remove 按钮连接:

1.       右键单击设计区域的 Edit 按钮并从弹出菜单中选择 Events > PropertyChange > propertyChange

2.       在源编辑器中光标所在的行,复制并粘贴以下代码。



    editContact.setEnabled(contactsModel.isEditingEnabled());

                    

3.       Remove 按钮重复此步骤,但这次使用以下代码:



    removeContact.setEnabled(contactsModel.isRemovalEnabled());

          

IDE 设置这些按钮以启用对数据库联系人的编辑和删除。




这篇关于使用NetBeans将GUI连接到Derby数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/617893

相关文章

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符