繁体   English   中英

如何将数据从TextFields插入SQLite数据库?

[英]How to Insert Data from TextFields into SQLite Database?

我有一个表单,在我的应用程序中,需要填写该表单,并将其中键入的内容插入到名为BookJ的.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)
journal.executeQuery();

您的SQL不查询数据库。

您正在尝试“更新”数据库,因此您需要使用:

journal.executeUpdate();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM