简体   繁体   English

从mysql插入错误

[英]error with insert into from mysql

i'm new here and i have a question. 我是新来的,我有一个问题。

I am trying to insert a row into my MySQL database via Java. 我正在尝试通过Java将行插入到MySQL数据库中。 for the java part i use Netbeans. 对于Java部分,我使用Netbeans。

when i run it i get the following error: 当我运行它时,出现以下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:SQL语法有错误; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES01234567PietdeBakker0113605040java.util.GregorianCalendar[time=?,areFields' at line 1 在第1行的“ VALUES01234567PietdeBakker0113605040java.util.GregorianCalendar [time = ?, areFields””附近,检查与您的MySQL服务器版本相对应的手册以使用正确的语法。

the code i came up with is the following from DBObject.java: 我想出的代码是来自DBObject.java的以下代码:

 public void insertDeelnemer(Deelnemer d){
   String sql = "INSERT INTO deelnemer(OVnummer,Voornaam,Tussenvoegsel,Achternaam,Telefoonnummer,Geboortedatum) VALUES" + d.getOvnummer() + d.getVoornaam() + d.getTussenvoegsel() + d.getAchternaam() + d.getTelefoonnummer() + d.getGeboortedatum();
   try{
       stmt = conn.createStatement();
       stmt.executeUpdate(sql);

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

which goes with this from DeelnemerToevoegen.java: 这与DeelnemerToevoegen.java的搭配:

String OVnummer = OVnummerVak1.getText();
String Voornaam = VoornaamVak1.getText();
String Achternaam = AchternaamVak1.getText();
String Tussenvoegsel = TussenvoegselVak1.getText();
int dag = DagComboBox1.getSelectedIndex()+1;
int maand = MaandComboBox1.getSelectedIndex();
int jaar = JaarComboBox1.getSelectedIndex()+1980;
GregorianCalendar Geboortedatum = new GregorianCalendar(jaar, maand, dag);
String Telefoonnummer = TelefoonnummerVak.getText();
Deelnemer d = new Deelnemer(OVnummer, Voornaam, Achternaam, Tussenvoegsel, Geboortedatum, Telefoonnummer);
DBObject dbo = new DBObject();
dbo.insertDeelnemer(d);

You need parentheses around your values list as well as a comma between each. 您需要在值列表周围加上括号,并在每个值之间使用逗号。 And probably quotes around each value too. 并且可能在每个值周围也都加了引号。

You need brackets and commas for your values (and probably " for the string values): 您需要将方括号和逗号作为您的值(对于字符串值,可能需要使用" ):

This is the syntax: 这是语法:

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

The syntax for INSERT is INSERT的语法是

INSERT INTO table ( column1, column2, ... ) VALUES( data1, data2, ... ) ;

The numbers of specified columns and data must match. 指定的列数和数据必须匹配。 And if you insert non numerical values you'll have to quote '...' the data. 而且,如果您插入非数字值,则必须在数据中加上'...'

Just write your SQL string to a log, and you'll probably see that it's not really valid sql at all. 只需将SQL字符串写入日志中,您可能会发现它根本不是真正有效的sql。 You're just concatenating all the values right next to the word values which will make it something like 您只是将所有值串联在单词values旁边,这会使它像

"INSERT INTO deelnemer(OVnummer,Voornaam,Tussenvoegsel,Achternaam,Telefoonnummer,Geboortedatum) 
VALUES12345JanDeVreis061234567804099180"

which is cleary NOT valid sql 这显然是无效的SQL

Try this dude .... 试试这个家伙....

String sql = "INSERT INTO deelnemer(`OVnummer`,`Voornaam`,`Tussenvoegsel`,`Achternaam`,`Telefoonnummer`,`Geboortedatum`) VALUES("+String.valueOf(d.getOvnummer())+","+String.valueOf(d.getVoornaam())+","+String.valueOf( d.getTussenvoegsel())+","+ String.valueOf(d.getAchternaam())+","+String.valueOf(d.getTelefoonnummer())+","+String.valueOf( d.getGeboortedatum())+")"; String sql =“ INSERT INTO deelnemer(`OVnummer`,`Voornaam`,`Tussenvoegsel`,`Achternaam`,`Telefoonnummer`,`Geboortedatum`)VALUES(” + String.valueOf(d.getOvnummer())+“,” + String.valueOf(d.getVoornaam())+“,” + String.valueOf(d.getTussenvoegsel())+“,” + String.valueOf(d.getAchternaam())+“,” + String.valueOf( d.getTelefoonnummer())+“,” + String.valueOf(d.getGeboortedatum())+“)” ;;

You're missing a space between VALUES and " . This should be VALUES " + . 您在VALUES"之间缺少空格。应为VALUES " + Also, all values need to be comma-separated and strings need to be quoted using a single quote ('). 同样,所有值都必须用逗号分隔,并且字符串必须使用单引号(')引起来。 That's what you get for not using parameterized queries... 这就是您不使用参数化查询所得到的...

EDIT 编辑
Additional tip: Look at Adrian's SQL statement. 附加提示:查看Adrian的SQL语句。 Unless the content of your sql variable looks like that if you print it to the console, you're not providing valid SQL. 除非您将sql变量的内容打印到控制台上,否则它不会提供有效的SQL。

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

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