2011-04-09 77 views
0

当我添加两个字段datebirthdate时,我在将数据插入MS Access数据库时遇到问题。它在插入语句中给出了语法错误。我被建议使用PreparedStatement,但是我不清楚我在代码中所做的更改。任何人都可以解释给我吗?在ms访问数据库中插入准备好的语句

int regno= Integer.parseInt(cbregn.getSelectedItem().toString()); //regno=pkey 
String nm= cbnm.getSelectedItem().toString(); 
String place=tfplace.getText(); 
String kul=tfkul.getText(); 
String gotra=tfgotra.getText(); 
String kswami=tfswami.getText(); 
String raddr=taraddr.getText(); 
int pincode=Integer.parseInt(tfpcd.getText());//taken datatype number for pincode 
int stdcd=Integer.parseInt(tfstdcode.getText());//taken datatype number for stdcode 
int tele=Integer.parseInt(tftele.getText());//taken datatype number for teleph no 
int mno=(int) Long.parseLong(tfmno.getText());//taken datatype number for mobileno 
String email=tfemail.getText(); 
String website=tfweb.getText(); 
String education=tfedu.getText(); 
String branch=tfbrch.getText(); 
int brthdt=Integer.parseInt(tfbdt.getText()); 
String bloodgroup=(String)cbbldgrp.getSelectedItem(); 

try 
{ 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    Connection con=DriverManager.getConnection("jdbc:odbc:wanisamajDB"); 
    Statement stmt=con.createStatement(); 
    String qry= "INSERT INTO Registration1(RegistrationNo,SeniorPerson,NativePlace,Kul,Gotra,KulSwami,ResidensialAddress,PinCode,STDcode,TelephoneNo,MobileNo,Email,Website,Education,Branch,BloodGroup) VALUES('"+regno+"','"+nm+"','"+place+"','"+kul+"','"+gotra+"','"+kswami+"','"+raddr+"','"+pincode+"','"+stdcd+"','"+tele+"','"+mno+"','"+email+"','"+website+"','"+education+"','"+branch+"','"+bloodgroup+"')"; 
    // String qry= "INSERT INTO Registration1(RegistrationNo,SeniorPerson,NativePlace,Kul,Gotra,KulSwami,ResidensialAddress,PinCode,STDcode,TelephoneNo,MobileNo,Email,Website,Education,Branch,BloodGroup,Date,BirthDate) VALUES('"+regno+"','"+nm+"','"+place+"','"+kul+"','"+gotra+"','"+kswami+"','"+raddr+"','"+pincode+"','"+stdcd+"','"+tele+"','"+mno+"','"+email+"','"+website+"','"+education+"','"+branch+"','"+bloodgroup+"','"+date+"','"+brthdt+"')"; 
    stmt.executeUpdate(qry); 
    JOptionPane.showMessageDialog(null,"RECORD IS SAVED SUCCESSFULLY "); 
    con.close(); 
} 
catch(SQLException eM) { 
    System.out.println(" "+eM); 
    JOptionPane.showMessageDialog(null,"RECORD IS NOT SAVED"); 
} 
catch(Exception et) 
{ 
    System.out.println("error:"+et.getMessage()); 
} 
+1

这是最近流行的问题http://stackoverflow.com/questions/5570897/error-in-insert-into-statement – Sean 2011-04-09 05:18:57

回答

0

将这个

System.out.println(qry); 

,下

String qry = "..."; 

然后粘贴到你的MSACCESS输出。错误会更清楚一点。此外,我看到你解析你的生日(brthd t)到int。它是否正确 ?

0

当你使用这么长的陈述时,涉及到很多参数 - 这几乎是不可能的,不会犯错误。 我高度推荐使用preparedStatment。

如果你仍然坚持使用陈述, 尝试打印字符串到控制台,看看你是否在你的陈述中缺少撇号或逗号。