java - 如何从用户输入的 JTextField 中向 MySql 表中插入值

标签 java mysql swing

我已尝试将值从 JTextField 中的用户输入插入到表中。代码运行出错:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax

谁能帮我解决这个问题?谢谢!

这是我的代码。

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.BorderLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

class InputRoute
{

JTextField text1;
JTextField text2;
JTextField text3;
String c;
Float d;

public void inputRoute() 
{

    Connection conn = null;
    String url = "jdbc:mysql://localhost:3306/";
    String dbName = "YarraTram";
    String driver = "com.mysql.jdbc.Driver";
    String userName = "root";
    String password = "abc123";

    try 
    {
        Class.forName(driver).newInstance();
        conn = DriverManager.getConnection(url + dbName, userName, password);

        PreparedStatement statement = conn.prepareStatement("INSERT INTO  ('route', 'price') VALUES ('"+c+"', '"+d+"')");
        statement.executeQuery();

    } 
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

 public void createAndShowGUI() 
{

    final JFrame frame = new JFrame("Yarra Tram Route Finder(New Route)");

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLayout(new FlowLayout());

    JLabel label1 = new JLabel("From: ");
    JLabel label2 = new JLabel("To: ");
    JLabel label3 = new JLabel("Price: ");

    text1 = new JTextField(20);
    text2 = new JTextField(20);
    text3 = new JTextField(20);

    JButton button1 = new JButton("Add");
    JButton button2 = new JButton("Close");

    frame.add(label1, BorderLayout.WEST);
    frame.add(text1, BorderLayout.EAST);
    frame.add(label2, BorderLayout.WEST);
    frame.add(text2, BorderLayout.EAST);
    frame.add(label3, BorderLayout.WEST);
    frame.add(text3, BorderLayout.EAST);
    frame.add(button1);
    frame.add(button2);

    button2.addActionListener(new ActionListener() 
    {
        @Override
        public void actionPerformed(ActionEvent e) 
        {
            String a = text1.getText();
            String b = text2.getText();
            d = Float.parseFloat(text3.getText());

            c = a + " - " + b;

            inputRoute();
        }
    });
    button2.addActionListener(new ActionListener() 
    {
        @Override
        public void actionPerformed(ActionEvent e) 
        {
            frame.dispose();
        }
    });

    frame.setSize( 500,120 );
    frame.setLocationRelativeTo( null );
    frame.pack();
    frame.setVisible(true);
} 
}

这是我的 MySQL 表

 CREATE TABLE `route` (
 `rid` int(11) NOT NULL AUTO_INCREMENT,
 `route` varchar(100) ,
 `price` decimal(5,2) ,
 PRIMARY KEY (`rid`)
 )

最佳答案

首先,您缺少表名:

... ("INSERT INTO  ('route', 'price') VALUES ...
                 /\
                  here

其次,您不应该在列名称中使用冒号 '。像这样使用反引号:

... ("INSERT INTO  `route` (`route`, `price`) VALUES ...

冒号用于传递文字值。

关于java - 如何从用户输入的 JTextField 中向 MySql 表中插入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14019164/

相关文章:

MYSQL:替换电话号码以添加国家/地区代码

Java( Swing ): influence height of JList in GridBagLayout

java - 如何在应用程序中混合使用 32 位和 64 位 .so 文件

Java心跳框架

java - 如何并排显示两个 TextView

java - 从 java 设置 MySql 连接的问题

sql - mySQL 递归计数()

javascript - 提交时无法从 HTML 表单获取 jQuery 中的值

java - 动态添加 JTextFields 后将其删除

Java JButton 文本和焦点显示不正确、重叠