天道酬勤,学无止境

javadb

检索刚刚插入 Java DB (Derby) 数据库的记录 ID(Retrieve id of record just inserted into a Java DB (Derby) database)

问题 我正在使用 JDBC 连接到 Java DB 数据库,并希望检索插入的最后一条记录的 id(自动递增)。 我看到这是一个常见问题,但我看到使用例如 MS SQL Server 的解决方案,Java DB 的等价物是什么? 回答1 无需为此使用 DBMS 特定的 SQL。 这就是 getGeneratedKeys() 的用途。 在准备您的语句时,您传递自动生成的列的名称,然后您可以使用 getGeneratedKeys() PreparedStatement pstmt = connection.prepareStatement( "insert into some_table (col1, col2, ..) values (....)", new String[] { "ID_COLUMN"} ); pstmt.executeUpdate(); ResultSet rs = pstmt.getGeneratedKeys(); // will return the ID in ID_COLUMN 请注意,在这种情况下(在 Derby 和许多其他 DBMS 中),列名区分大小写。 new String[] { "ID_COLUMN"}与new String[] { "id_column"}有所不同 或者,您也可以使用: connection.prepareStatement(

2021-10-21 18:21:47    分类:技术分享    sql   jdbc   javadb

将 derby 数据库附加到 jar 文件中(attach derby database into jar file)

问题 我正在使用数据库应用程序(SWING)。 我使用的是 Java DB 和 NetBeans 7.1.2。 在 IDE 中,应用程序运行良好,前提是我最初在“服务”窗口中手动连接数据库。 此外,我已将 derby.jar 和 derbyclient.jar 文件添加到库中。 但是当从“dist”文件夹运行应用程序时,它无法连接到数据库。 我想知道是否可以将 db 附加到 jar 文件中,以便我可以从 IDE 外部运行该应用程序。 谢谢你。 回答1 您可以执行以下操作 在 netbeans 之外启动java DB或如果您使用 Derby,请使用Embedded mode 。 这样您就可以在没有单独的数据库服务器的情况下运行您的应用程序。

2021-10-19 20:00:13    分类:技术分享    netbeans-7   javadb

attach derby database into jar file

I am midway through a database application(SWING). I am using Java DB and NetBeans 7.1.2. Within the IDE, the app runs good, provided I initially connect the database manually in the 'services' window. Also, I have added the derby.jar and derbyclient.jar files to the libraries. But when running the app from the "dist" folder, it fails to connect to the database. I want to know whether i can attach the db within the jar file so that i can run the app from outside the IDE. Thank you.

2021-10-19 06:31:44    分类:问答    netbeans-7   javadb

在独立 Java 应用程序中设置嵌入式 Derby 数据库(Setting up an embedded Derby database in a standalone Java application)

问题 我正在尝试为独立的 Java 应用程序设置嵌入式 Derby 数据库,但是在查阅了各种文档之后,我似乎找不到任何简单的解释或示例。 我将 Eclipse 与 Derby 插件一起使用,并为我的项目启用了 Derby 性质。 我找到了一个在独立地址簿中使用嵌入式 Derby 数据库的示例以及在 Eclipse 中使用 Derby 的概述(似乎没有涵盖嵌入式部署),但我仍然觉得我缺少一些基本的东西。 这是我第一次尝试在 Java 中使用数据库,我有点困惑,所以这里是我的基本问题: Java 如何与 Derby 数据库(在嵌入式部署中)交互的基本原理(或模型)是什么? 是否要遵循他们的重要设计模式? 我是否需要在类中创建某种类型的数据库构造函数(包括表结构等),还是全部使用其他工具完成? 创建并保存数据库后,如何“启动”它? 实际的数据库保存在哪里? 代码片段将非常有帮助! 回答1 要在 Java 中以嵌入模式使用 Derby,我们需要执行以下步骤: 使用位于derbyclient Maven 依赖项中的org.apache.derby.jdbc.EmbeddedDriver驱动程序使用嵌入模式的连接字符串: jdbc:derby:dbname 设置德比系统主页: System.setProperty("derby.system.home", "/home/janbodnar/

2021-10-15 08:05:18    分类:技术分享    java   embedded-database   javadb   derby

我应该如何将 UUID 与 JavaDB/Derby 和 JDBC 一起使用?(How should I use UUID with JavaDB/Derby and JDBC?)

问题 我目前在 JavaDB (Apache Derby) 中使用INT作为主键类型,但由于我正在实现分布式系统,我想将类型更改为 java.util.UUID。 关于这个的几个问题: 我应该为 UUID 使用 JavaDB/Derby 中的哪种数据类型? 我已经看到CHAR(16) FOR BIT DATA被提及,但我对此知之甚少。 VARCHAR(16)是替代品吗? 我应该如何将它与 JDBC 一起使用? 例如,在PreparedStatement ,我应该如何设置和获取 UUID? 如果我以后想将数据库更改为 SQL Server,是否有与 java.util.UUID 兼容的数据类型? 简单地说,我应该如何将 UUID 与 JavaDB/Derby 和 JDBC 一起使用? 回答1 UUID 是一个 128 位的值。 CHAR(16) FOR BIT DATA类型反映为简洁起见,它是以字符形式存储的位数据。 我不认为VARCHAR(16)会起作用,因为它没有位标志。 数据库必须能够将二进制数据转换为字符数据,这需要处理编码并且存在风险。 更重要的是,它不会给你买任何东西。 由于 UUID始终为128 位,因此使用VARCHAR不是CHAR不会节省空间。 所以你不妨使用预期的CHAR(16) FOR BIT DATA 。 对于 JDBC,我认为您使用 get/setBytes

2021-10-08 08:39:13    分类:技术分享    jdbc   types   uuid   derby   javadb

Getting a java.sql.SqlNonTransientConnectionException

I am rather new to Java and JavaDB. I am trying to create a database in Netbeans 7.0.1 and after the server starts, I get an error that says: "An error occurred while creating the database: java.sql.SqlNonTransientConnectionException: A communications error has been detected: Software caused connection abort: recv failed.." I have tried to disable my antivirus (Microsoft Security Essentials) and my Windows Firewall, as well as disable an internet filter(Contentwatch's NetNanny) all to no avail. Is there something I'm missing? Google is no help either.

2021-10-02 08:52:27    分类:问答    java   derby   javadb

使用 JDBC 从多个表中选择时如何识别列?(How can I identify columns when SELECTing from multiple tables with JDBC?)

问题 我在 id 列上加入了两个表,它们看起来像: +-------+ | users | +----+--+---+ | id | name | +----+------+ +-------+ | posts | +-------+------+---------+ | id | user_id | message | +----+---------+---------+ 现在我想选择所有帖子并包含用户名,包括: SELECT * FROM posts, users WHERE user_id = users.id 然后我尝试使用以下方法获取值: ResultSet rs = // SQL if(rs.next()) { rs.getInt("posts.id"); ... } 但是我在执行rs.getInt("posts.id")时得到SQLException : java.sql.SQLException: Column 'posts.id' not found. 如何使用 JDBC 和 JavaDB/Derby 作为数据库从上面的 SQL 查询中获取值? 使用ResultSet检索值时,如何区分users和posts表中的id列? 回答1 您正在尝试检索id值,但您正在使用“posts.id”来引用它。 别 您只需要列名或别名,而不是表名: ResultSet rs = /

2021-09-20 05:16:17    分类:技术分享    sql   jdbc   join   resultset   javadb

如何使用嵌入式 JavaDB 数据库部署 Java Swing 应用程序?(How to deploy a Java Swing application with an embedded JavaDB database?)

问题 我已经实现了一个使用嵌入式 JavaDB 数据库的 Java Swing 应用程序。 数据库需要存储在某个地方,并且需要在第一次运行时创建数据库表。 执行这些程序的首选方法是什么? 我是否应该始终在本地目录中创建数据库,并首先检查数据库文件是否存在,如果不存在让用户创建表(或至少显示将创建表的消息)。 还是应该让用户选择路径? 但后来我必须在某处保存路径。 我是否应该使用 Preferences.systemRoot(); 保存路径,并检查该变量是否在启动时设置? 如果用户选择了一个路径并将其保存在Preferences ,我是否会遇到用户权限方面的问题? 或者在用户存储数据库的任何地方都应该是安全的? 或者我该如何处理? 对这个程序还有其他建议吗? 回答1 我会让用户选择。 这样他们就可以运行多个实例(同时或以其他方式)。 提供合理的违约将是一个很好的举措。 使用 Preferences API 存储路径(我会存储每个用户,但可能会因您的应用程序而异),并使用 File 对象来确定目录是否存在和/或是否获得正确许可。

2021-09-19 17:15:50    分类:技术分享    java   deployment   preferences   embedded-database   javadb

Netbeans 未使用 JDK 1.8.0_40 启动 Java DB 服务器(Netbeans not starting Java DB Server with JDK 1.8.0_40)

问题 这是我的设置:1) Windows 8.1 2) JDK 1.8.0_40 3) Netbenas 8.0.2 系统运行 JDK 1.8.0_31,一切运行良好。 卸载了 JDK 1.8.0_31 并安装了 JDK 1.8.0_40 并调整了 JAVA_HOME 变量以反映新的 JDK 版本,从 C:\java\jdk1.8.0_31 到 C:\java\jdk1.8.0_40。 我对我的 Netbeans 应用了以下更改: 1) 菜单工具 | 库:“Java DB 驱动程序”已更改以反映 JDK 版本附带的库:C:\java\jdk1.8.0_40\db\lib\derby.jar C:\java\jdk1.8.0_40\db\lib\ derbyLocale_pt_BR.jar (我来自巴西) C:\java\jdk1.8.0_40\db\lib\derbyclient.jar C:\java\jdk1.8.0_40\db\lib\derbynet.jar 2) '服务'选项卡, 右键单击​​“Java DB”,属性菜单项:a) 将“Java DB 安装”设置为 C:\java\jdk1.8.0_40\db b) 当一切正常时,数据库位置相同。 在 (1) 中,唯一的区别在于 JDK 根目录。 现在,当我右键单击“服务”选项卡上的“Java DB”时,什么也没有发生

2021-09-19 11:18:04    分类:技术分享    java   netbeans-8   javadb

Netbeans 未使用 JDK 1.8.0_40 启动 Java DB 服务器(Netbeans not starting Java DB Server with JDK 1.8.0_40)

问题 这是我的设置:1) Windows 8.1 2) JDK 1.8.0_40 3) Netbenas 8.0.2 系统运行 JDK 1.8.0_31,一切运行良好。 卸载了 JDK 1.8.0_31 并安装了 JDK 1.8.0_40 并调整了 JAVA_HOME 变量以反映新的 JDK 版本,从 C:\java\jdk1.8.0_31 到 C:\java\jdk1.8.0_40。 我对我的 Netbeans 应用了以下更改: 1) 菜单工具 | 库:“Java DB 驱动程序”已更改以反映 JDK 版本附带的库:C:\java\jdk1.8.0_40\db\lib\derby.jar C:\java\jdk1.8.0_40\db\lib\ derbyLocale_pt_BR.jar (我来自巴西) C:\java\jdk1.8.0_40\db\lib\derbyclient.jar C:\java\jdk1.8.0_40\db\lib\derbynet.jar 2) '服务'选项卡, 右键单击​​“Java DB”,属性菜单项:a) 将“Java DB 安装”设置为 C:\java\jdk1.8.0_40\db b) 当一切正常时,数据库位置相同。 在 (1) 中,唯一的区别在于 JDK 根目录。 现在,当我右键单击“服务”选项卡上的“Java DB”时,什么也没有发生

2021-09-19 11:16:09    分类:技术分享    java   netbeans-8   javadb