MySQL数据插入错误

标签 mysql sql database

请找出这段代码中的错误,我正在尝试保存数据,但它没有存储 使用 Eclipse、MySQL、64 位

错误:

java.sql.SQLException: [MySQL][ODBC 5.2(w) Driver][mysqld-5.5.28]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database ('did','dname','dadress','salary','sex','specialist','cell#')VALUES (?,' at line 1

package pk.pucit;
import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

class DoctorsRecord {

public JFrame frm=new JFrame("Doctor's Record Information");
public  JButton btn1,btn2,btn3,btn4;
public  JLabel lbl1,lbl2,lbl3,lbl4,lbl5,lbl6,lblr;
public JTextField txt1,txt2,txt3,txt4,txt5,txt6,txt7;
public  JRadioButton rbtn1,rbtn2;
//frm.setBackground(Color.green);

public DoctorsRecord(){
    lbl1=new JLabel("Doctor ID");
    lbl2=new JLabel("Doctor's Name");
    lbl3=new JLabel("Address");
    lblr=new JLabel("Gender");
    lbl4=new JLabel("Salary");
    lbl5=new JLabel("Rank");
    lbl6=new JLabel("Ph #");


    txt1=new JTextField(7);
    txt2=new JTextField(7);
    txt3=new JTextField(7);
    txt4=new JTextField(7);
    txt5=new JTextField(7);
    txt6=new JTextField(7);
    txt7=new JTextField(7);

    /*rbtn1=new JRadioButton("Male");
    rbtn2=new JRadioButton("Female");*/

    btn1=new JButton("Save");
    btn2=new JButton("Search ");
    btn3=new JButton("Reset");
    btn4=new JButton("Cancel");

    JPanel pnl1=new JPanel();

    pnl1.add(lbl1);
    pnl1.add(txt1);
    pnl1.add(lbl2);
    pnl1.add(txt2);
    pnl1.add(lbl3);
    pnl1.add(txt3);
    pnl1.add(lblr);
    pnl1.add(txt7);
    pnl1.add(lbl4);
    pnl1.add(txt4);
    pnl1.add(lbl5);
    pnl1.add(txt5);
    pnl1.add(lbl6);
    pnl1.add(txt6);
    pnl1.setLayout(new GridLayout(8,1));

    JPanel pnl=new JPanel();

    pnl.add(btn1);
    pnl.add(btn2);
    pnl.add(btn3);
    pnl.add(btn4);
    pnl.setLayout(new GridLayout(1,2));

    frm.add(pnl1,BorderLayout.CENTER);
    frm.add(pnl,BorderLayout.SOUTH);

    //frm.setLayout(new GridLayout(10,1));
    frm.setBounds(400,100,400,500);
    frm.setVisible(true);
    frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    btn1.addActionListener(new ActionListener()
    {

        public void actionPerformed(ActionEvent ae){
            try{
                String id=txt1.getText();
                String name=txt2.getText();
                String add=txt3.getText();
                String sal=txt4.getText();
                String sex=txt5.getText();
                String sep=txt6.getText();
                String cell=txt7.getText();
                dataHandler(id,name,add,sal,sex,sep,cell);
            }
            catch(Exception e){
                System.out.println("Exception occur");
            }
        } 

    }
            );
}
    public void dataHandler(String id,String dn,String add,String sal,String   sex,String sep,String cell)throws ClassNotFoundException, SQLException{
        try{
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con = DriverManager.getConnection("jdbc:odbc:Dbms", "root", "root");
    String query = "insert into database    ('did','dname','dadress','salary','sex','specialist','cell#')" +"VALUES (?,?,?,?,?,?,?)";
       PreparedStatement preparedStatement = con.prepareStatement(query);
        preparedStatement.setString(1, id);
        preparedStatement.setString(2, dn);
        preparedStatement.setString(3, add);
        preparedStatement.setString(4, sal);
        preparedStatement.setString(5, sex);
        preparedStatement.setString(6, sep);
        preparedStatement.setString(7, cell);
        preparedStatement.execute();
        con.close();
    }catch(Exception oc){
        System.out.println(oc.toString());
    }
    }
    public static void main(String []args){
        new DoctorsRecord();

    }
}

最佳答案

您的查询有两个问题。

首先DataBase是保留关键字,必须用反引号转义。

String query = "insert into `database` (did,dname,dadress,salary,sex,specialist,`cell#`) 
                VALUES (?,?,?,?,?,?,?)";

其次,列名不能用单引号引起来。因为如果您这样做,它也会生成一个错误,告诉您未找到该列。只有columnNamestableNames 可以用反引号括起来。

关于MySQL数据插入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14521949/

相关文章:

mysql - 如何删除 mysql 表中包含另一个查询结果中的字段的行?

android - 拥有 godaddy 的网络主机,但用户端有 Squarespace 运行

sql - 连接同一个表中的两个选择查询

MySQL 在 'table' 上更新之后/之前设置了同一 'table' 上的最后更新

mongodb - 字符串还是 float ?

MySQL - 在选择另一列的最小值后选择一列的最小值

mysql - 如何在if语句中调用存储过程?

sql - 更改从 SQL Server 数据库获取的数据值

mysql - SQL LIKE REGEXP 匹配单个值和逗号字符串

java - Flyway 数据库迁移到多个模式