2017-06-19 115 views
-1

我有一個表單,在我的應用程序中,需要填寫,裏面輸入的內容需要插入名爲BookJ的.sqlite表中。如何將數據從TextFields插入SQLite數據庫?

這裏是我的代碼示例,我使用的是以前學過的方法,而是獲得我想要什麼,我得到的錯誤「java.sql.SQLException中:查詢不返回結果」

Connection connection = null; 

import java.sql.*; 
import javax.swing.*; 

import java.awt.BorderLayout; 
import java.awt.EventQueue; 

import javax.swing.border.EmptyBorder; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 

public class PopulateTables extends JFrame { 

private JPanel contentPane; 

/** 
* Launch the application. 
*/ 
public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       PopulateTables frame = new PopulateTables(); 
       frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

Connection connection = null; 

private JTextField textFieldSName; 
private JTextField textFieldSSName; 
private JTextField textFieldAName; 
private JTextField textFieldASName; 
private JTextField textFieldBookT; 
private JTextField textFieldGenre; 
private JTextField textField; 

/** 
* Create the frame 
*/ 
public PopulateTables() { 

connection = SqlConnection.dbConnector1(); 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(350, 350, 700, 550); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(null); 

    JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); 
    tabbedPane.setBounds(6, 43, 688, 479); 
    contentPane.add(tabbedPane); 

    JPanel panel = new JPanel(); 
    tabbedPane.addTab("New Reading Journal Entry", null, panel, null); 
    panel.setLayout(null); 

    JLabel lblYourName = new JLabel("Your Name: "); 
    lblYourName.setBounds(77, 26, 91, 16); 
    panel.add(lblYourName); 

    textFieldSName = new JTextField(); 
    textFieldSName.setBounds(46, 46, 151, 37); 
    panel.add(textFieldSName); 
    textFieldSName.setColumns(10); 

    JLabel lblYourSurname = new JLabel("Your Surname: "); 
    lblYourSurname.setBounds(67, 95, 130, 16); 
    panel.add(lblYourSurname); 

    textFieldSSName = new JTextField(); 
    textFieldSSName.setColumns(10); 
    textFieldSSName.setBounds(46, 113, 151, 37); 
    panel.add(textFieldSSName); 

    JLabel lblAuthorsFirstName = new JLabel("Author's First Name:"); 
    lblAuthorsFirstName.setBounds(465, 26, 161, 16); 
    panel.add(lblAuthorsFirstName); 

    JLabel lblAuthorsLastName = new JLabel("Author's Last Name:"); 
    lblAuthorsLastName.setBounds(465, 95, 161, 16); 
    panel.add(lblAuthorsLastName); 

    textFieldAName = new JTextField(); 
    textFieldAName.setColumns(10); 
    textFieldAName.setBounds(461, 46, 151, 37); 
    panel.add(textFieldAName); 

    textFieldASName = new JTextField(); 
    textFieldASName.setColumns(10); 
    textFieldASName.setBounds(461, 113, 151, 37); 
    panel.add(textFieldASName); 

    JLabel lblTitleOfBook = new JLabel("Title of Book: "); 
    lblTitleOfBook.setBounds(67, 188, 91, 16); 
    panel.add(lblTitleOfBook); 

    textFieldBookT = new JTextField(); 
    textFieldBookT.setBounds(46, 216, 151, 37); 
    panel.add(textFieldBookT); 
    textFieldBookT.setColumns(10); 

    JLabel lblGenre = new JLabel("Genre:"); 
    lblGenre.setBounds(77, 276, 61, 16); 
    panel.add(lblGenre); 

    textFieldGenre = new JTextField(); 
    textFieldGenre.setColumns(10); 
    textFieldGenre.setBounds(46, 304, 151, 37); 
    panel.add(textFieldGenre); 

    JLabel lblEntrywriteA = new JLabel("Write a couple words about what you thought"); 
    lblEntrywriteA.setBounds(323, 188, 303, 16); 
    panel.add(lblEntrywriteA); 

    JLabel lblNewLabel = new JLabel("the book was like:"); 
    lblNewLabel.setBounds(323, 202, 289, 16); 
    panel.add(lblNewLabel); 

    textField = new JTextField(); 
    textField.setBounds(323, 221, 289, 120); 
    panel.add(textField); 
    textField.setColumns(10); 

    JButton btnEnter = new JButton("Enter "); 
    btnEnter.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      try { 
      String journalquery = "insert into BookJ (StudentFirst, StudentLast, TitleOfBook, AuthorFirst, AuthorLast, Genre, Entry) values (?, ?, ?, ?, ?, ?, ?)"; 
      PreparedStatement journal = connection.prepareStatement(journalquery); 

      journal.setString(1, textFieldSName.getText()); 
      journal.setString(2, textFieldSSName.getText()); 
      journal.setString(3, textFieldBookT.getText()); 
      journal.setString(4, textFieldAName.getText()); 
      journal.setString(5, textFieldASName.getText()); 
      journal.setString(6, textFieldGenre.getText()); 
      journal.setString(7, textField.getText()); 


      journal.executeQuery(); 

      JOptionPane.showMessageDialog(null, "Entry Saved!"); 
      } 
      catch(Exception e3){ 
       JOptionPane.showMessageDialog(null, e3);  
      } 

     } 
    }); 
    btnEnter.setBounds(273, 378, 117, 29); 
    panel.add(btnEnter); 

    JPanel panel_1 = new JPanel(); 
    tabbedPane.addTab("New Book Recommendation", null, panel_1, null); 
} 
} 

對不起,我想我需要包含絕對的一切。順便說一下,我與.sqlite數據庫的實際連接是正確的,並且始終有效(它位於不同的類中)。我需要有一個ResultSet嗎?如果我這樣做,我該如何使用它?

謝謝!

這裏是堆棧跟蹤:

java.sql.SQLException: Query does not return results 
at org.sqlite.jdbc3.JDBC3PreparedStatement.executeQuery(JDBC3PreparedStatement.java:68) 
at version1.PopulateTables$2.actionPerformed(PopulateTables.java:149) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 
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:6533) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
at java.awt.Component.processEvent(Component.java:6298) 
at java.awt.Container.processEvent(Container.java:2236) 
at java.awt.Component.dispatchEventImpl(Component.java:4889) 
at java.awt.Container.dispatchEventImpl(Container.java:2294) 
at java.awt.Component.dispatchEvent(Component.java:4711) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 
at java.awt.Container.dispatchEventImpl(Container.java:2280) 
at java.awt.Window.dispatchEventImpl(Window.java:2746) 
at java.awt.Component.dispatchEvent(Component.java:4711) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 
at java.awt.EventQueue.access$500(EventQueue.java:97) 
at java.awt.EventQueue$3.run(EventQueue.java:709) 
at java.awt.EventQueue$3.run(EventQueue.java:703) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) 
at java.awt.EventQueue$4.run(EventQueue.java:731) 
at java.awt.EventQueue$4.run(EventQueue.java:729) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 
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) 

回答

2
journal.executeQuery(); 

你的SQL不查詢數據庫。

您正在嘗試「更新」的dabase,所以你需要使用:

journal.executeUpdate(); 
+0

太感謝你了! –

相關問題