【发布时间】:2022-12-18 08:35:43
【问题描述】:
我是堆栈溢出的新手,我目前正在使用 NetBeans 和 java 来制作一个桌面应用程序,多个用户可以在其中同时访问一个数据库。但不幸的是,我尝试了几种启用行级锁定和 TRANSACTION_READ_COMMITTED 的代码,这在 db.apache.org 中有说明,但没有用。
我目前在 derby 中使用嵌入式数据库,通过搜索互联网,我找到了这个 db.apache.org enter image description here 和这个 enter image description here。
我无法理解如何通过启用行级锁定和 TRANSACTION_READ_COMMITTED 来设置多用户数据库访问。
我试过这段代码,我通过导入实现 TRANSACTION_READ_COMMITTED
import static java.sql.Connection.TRANSACTION_READ_COMMITTED;和
con.setTransactionIsolation(TRANSACTION_READ_COMMITTED);将隔离设置为 TRANSACTION_READ_COMMITTED。
这是我的程序。
`
import java.sql.*; import javax.swing.*; import java.util.logging.*; import static java.sql.Connection.TRANSACTION_READ_COMMITTED; public class Connect_data extends javax.swing.JFrame { String temp_use, temp_pass, temp_usertype, n, s , u; //FROM ACCOUNT Connection con; Statement stmt; ResultSet rs; public void DoConnect(){ try{ //Connect TO THE DATABASE String host = "jdbc:derby:C:\\DATABSE_SUB\\VERe"; String uName = "josh"; String uPass = "1234"; con = DriverManager.getConnection(host, uName, uPass); stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String sql = "SELECT * FROM ADD_BTN"; rs = stmt.executeQuery(sql); con.setTransactionIsolation(TRANSACTION_READ_COMMITTED); }catch(SQLException err){ JOptionPane.showMessageDialog(Connect_data.this, err.getMessage()); } } }`
我缺少的是启用行级锁定,老实说我不知道如何实现它。我试着把这个
-- database-level property CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY( 'derby.storage.rowLocking', 'true')在数据库服务 NetBeans 的执行命令中,但它没有用。
当我运行它连接到数据库的程序时,但是当我运行第二个程序时出现错误,这就是我得到的输出。
Exception in thread "AWT-EventQueue-0" java.lang.SecurityException: sealing violation: package org.apache.derby.security is sealed at java.base/jdk.internal.loader.BuiltinClassLoader.getAndVerifyPackage(BuiltinClassLoader.java:906) at java.base/jdk.internal.loader.BuiltinClassLoader.defineOrCheckPackage(BuiltinClassLoader.java:877) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.defineOrCheckPackage(ClassLoaders.java:211) at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:849) at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229) at New_Pack.Connect_data.DoConnect(Connect_data.java:132) at New_Pack.Connect_data.jButton1ActionPerformed(Connect_data.java:624) at New_Pack.Connect_data$7.actionPerformed(Connect_data.java:580) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389) at java.desktop/java.awt.Component.processEvent(Component.java:6391) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)我期待这会锻炼,但我找不到答案。我需要帮助。
【问题讨论】:
-
您是否在一台计算机上同时运行同一个应用程序两次?
-
是的,或者我应该在执行和编译这个程序时使用单独的计算机并使用网络连接到数据库?因为我在计划用户何时同时连接到同一个数据库。在这种情况下,我试图在执行和编译这个 java 程序之前修复它。
-
我不确定如果我需要先编译然后尝试连接不同的计算机是否可行。还是我在一台计算机上同时运行同一个应用程序两次而做错了?
-
我建议设置一些简单的 jmeter 测试来模拟多个用户。
标签: java swing netbeans derby embedded-database