Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过JFrame将播放器添加到数据库会产生空指针-找不到原因_Java_Mysql_Sql_Nullpointerexception - Fatal编程技术网

Java 通过JFrame将播放器添加到数据库会产生空指针-找不到原因

Java 通过JFrame将播放器添加到数据库会产生空指针-找不到原因,java,mysql,sql,nullpointerexception,Java,Mysql,Sql,Nullpointerexception,第一次在这里发布问题。主要是因为在无休止的搜索之后,我仍然无法找到解决方案,我不会感到惊讶,因为这是一个非常简单的解决方案,我只是忽略了 (注意:变量的名称等主要是荷兰语,因为这是我的语言,应该不会太重要。) 我一直在做一个项目,在这个项目中,我将JFrame链接到一个数据库,就向数据库添加播放器(见下文)而言,它非常有效。我的问题在于刷新显示数据库中当前播放器的JFrame。对于我当前的代码,无论我尝试什么,它都会返回null指针异常。为了保存大量文本,我在一个 添加到我在JFrame中添加播

第一次在这里发布问题。主要是因为在无休止的搜索之后,我仍然无法找到解决方案,我不会感到惊讶,因为这是一个非常简单的解决方案,我只是忽略了

(注意:变量的名称等主要是荷兰语,因为这是我的语言,应该不会太重要。)

我一直在做一个项目,在这个项目中,我将JFrame链接到一个数据库,就向数据库添加播放器(见下文)而言,它非常有效。我的问题在于刷新显示数据库中当前播放器的JFrame。对于我当前的代码,无论我尝试什么,它都会返回null指针异常。为了保存大量文本,我在一个

添加到我在JFrame中添加播放器的代码中(我现在省略了由NetBeans自动生成的代码)


由于我在这里调用另一个JFrame中的方法(名为vulSpelerTabel的方法,翻译为“fillPlayerTable”),因此该方法的代码如下:


我希望我没有忘记任何事情,而且有人能看到我一定在某个地方犯了一个错误,这给了我一个零指针例外。需要注意的几点:

  • 播放器确实会被添加到数据库中,但不会显示在显示所有播放器的JFrame上(名为“SpelerFrame.java”)(因为该帧不会刷新)
  • 按下“toevoegen”(翻译:Add)按钮时,会显示nullpointer异常。因为上面的注释就是这种情况,我假设它发生在这个按钮(“btnToevoegen”)代码的最后几行
  • 尽管SQL数据库有9个以上的值需要填写,但其他所有值都有默认值。“speler_id”是在别处确定的,但我100%确定这不是问题所在,因为当完全注释掉“speler_id”的行并在SQL中给它一个默认值时,问题仍然会出现
编辑:因为显然pastebin被忽略了,下面是被抛出的NPE:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

at Views.InschrijvenSpeler.btnToevoegenActionPerformed(InschrijvenSpeler.java:194)

at Views.InschrijvenSpeler.access$200(InschrijvenSpeler.java:11)

at Views.InschrijvenSpeler$3.actionPerformed(InschrijvenSpeler.java:115)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6525)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

at java.awt.Component.processEvent(Component.java:6290)

at java.awt.Container.processEvent(Container.java:2234)

at java.awt.Component.dispatchEventImpl(Component.java:4881)

at java.awt.Container.dispatchEventImpl(Container.java:2292)

at java.awt.Component.dispatchEvent(Component.java:4703)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)

at java.awt.Container.dispatchEventImpl(Container.java:2278)

at java.awt.Window.dispatchEventImpl(Window.java:2739)

at java.awt.Component.dispatchEvent(Component.java:4703)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)

at java.awt.EventQueue.access$400(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:697)

at java.awt.EventQueue$3.run(EventQueue.java:691)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)

at java.awt.EventQueue$4.run(EventQueue.java:719)

at java.awt.EventQueue$4.run(EventQueue.java:717)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
这是对自己的呼唤。由于您没有通过构造函数传递帧,因此它将始终保持null,从而导致NPE

您可以尝试以下代码

this.spelerFrame = new SpelerFrame();
但我怀疑这是你有意的行为。我建议您仔细阅读有关在主窗口/框架中添加框架的内容

编辑:


为了解决这个特殊问题,应该将
InschrijvenSpeler
的构造函数更改为
public InschrijvenSpeler(SpelerFrame-SpelerFrame){
,并且应该像
new InschrijvenSpeler(this)一样访问它。setVisible(true)

在您的代码中,NPE在哪里抛出?将异常添加到您的问题中。异常位于粘贴箱中。按我问题底部第二个注释中的“添加”按钮时抛出。在哪一行?请添加stacktrace。请记住,您在阅读时忽略了代码,这会影响stacktrace结果(让我们阅读)@Stultuske er..stacktrace究竟是什么>\u好吧,我认为是和否。如果我随后处理旧的“SpelerFrame.java”,这将是解决方案或者,与其处理旧框架,不如将其作为参数传递给
InschrijvenSpeler
的构造函数,这样您就可以在该类中重复使用它了,在java代码上有点烧坏:\Care to detaily?当前您使用的是空构造函数
public InschrijvenSpeler(){
。如果在创建InschrijvenSpeler框架之前存在SpelerFrame窗口,则可以使用类似于以下内容的新InschrijvenSpeler(SpelerFrame);并将构造函数更改为
公共InschrijvenSpeler(SpelerFrame-SpelerFrame){
。那样的话,如果构造函数执行,它实际上会给
这个.spelerFrame
分配一些东西,这个在里面不太好lol。给了我一个无限的外观DX。不得不重新启动笔记本电脑。在spelerFrame.java中打开InschrijvenSpeler.java的按钮下,我现在有:
新建InschrijvenSpeler(this)。setVisible(true);
在InschrijvenSpeler.java中,它现在是
类open private InschrijvenSpeler InschrijvenSpeler;private SpelerFrame SpelerFrame;public InschrijvenSpeler(SpelerFrame SpelerFrame){initComponents();setVisible(true);new InschrijvenSpeler(SpelerFrame);this.setDefaultCloseOperation(InschrijvenSpeler.DISPOSE_ON_CLOSE);}
字符限制:(
CREATE TABLE `speler` (
`speler_id` varchar(45) NOT NULL,
`voornaam` varchar(45) NOT NULL,
`achternaam` varchar(45) NOT NULL,
`straat` varchar(45) NOT NULL,
`huisnummer` varchar(45) NOT NULL,
`postcode` varchar(45) NOT NULL,
`woonplaats` varchar(45) NOT NULL,
`telefoonnummer` varchar(45) NOT NULL,
`email` varchar(45) NOT NULL,
`rating` double NOT NULL DEFAULT '1000',
`aantal_geen_betalingen` int(11) DEFAULT '0',
`gewonnen_inleggeld` double DEFAULT '0',
PRIMARY KEY (`speler_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

at Views.InschrijvenSpeler.btnToevoegenActionPerformed(InschrijvenSpeler.java:194)

at Views.InschrijvenSpeler.access$200(InschrijvenSpeler.java:11)

at Views.InschrijvenSpeler$3.actionPerformed(InschrijvenSpeler.java:115)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6525)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

at java.awt.Component.processEvent(Component.java:6290)

at java.awt.Container.processEvent(Container.java:2234)

at java.awt.Component.dispatchEventImpl(Component.java:4881)

at java.awt.Container.dispatchEventImpl(Container.java:2292)

at java.awt.Component.dispatchEvent(Component.java:4703)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)

at java.awt.Container.dispatchEventImpl(Container.java:2278)

at java.awt.Window.dispatchEventImpl(Window.java:2739)

at java.awt.Component.dispatchEvent(Component.java:4703)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)

at java.awt.EventQueue.access$400(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:697)

at java.awt.EventQueue$3.run(EventQueue.java:691)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)

at java.awt.EventQueue$4.run(EventQueue.java:719)

at java.awt.EventQueue$4.run(EventQueue.java:717)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
this.spelerFrame = spelerFrame;
this.spelerFrame = new SpelerFrame();