2015-10-07 142 views
0

您的SQL语法错误;在第1行使用'7)'附近的SQL语法错误

检查对应于您的MySQL服务器版本正确的语法手册使用近“7)”在行1

我在下面的代码获得上述错误,所以请给我建议任何适当的办法提前运行该代码.. 谢谢...

public void actionPerformed(ActionEvent ae) 
{ 
    String str1=(String)ae.getActionCommand(); 
    Object source = ae.getSource(); 
    if(source==home) 
    { 
     this.dispose(); 
     home t=new home(); 
     t.nn("","","",""); 
    } 
    if(source==sh) 
    { 
     for(p=0;p<12;p++) 
     { 
      if(mo[p]==dob2.getSelectedItem()) 
      mo1=p+1; 
      if(mo[p]==add2.getSelectedItem()) 
      mo2=p+1; 
     } 
     try 
     { 
      Class.forName("com.mysql.jdbc.Driver"); 
      Connection c = DriverManager.getConnection("jdbc:mysql://localhost/billing", "root", ""); 
      Statement stm = c.createStatement(); 
      t=0;in=0; 
      ResultSet rs = stm.executeQuery("select * from bill where (to_char(day,'mm') between "+mo1+" and "+mo2+")and(to_char(day,'dd') between "+dob1.getSelectedItem()+"and "+add1.getSelectedItem()+")"); 
      while(rs.next()) 
      { 
       t=1;  

       it[in]=rs.getInt("itid"); 
       ct[in++]=rs.getInt("count"); 
      } 
      if(t==0) 
      { 
       jp.showMessageDialog(this,"Sorry, No Such Record exisits","INFORMATION",jp.ERROR_MESSAGE); 
       t=0; 
      } 
       c.close(); 
      stm.close(); 
    } 
+0

帕蒂尔,而不是执行查询,打印查询+ mysql中执行它&然后检查错误 –

+0

'TO_CHAR ()'是一个MySQL函数? –

回答

0

你有一个间隔的问题上你的最后一个“和[...]” 。应该是“和[...]”

此外,我可能在这里是错的,但是你不是在混淆Oracle的to_char()和MySQL的date_format()函数吗?

在Oracle这将是to_char(day,'mm')在MySQL应该date_format(day,'%m')

SELECT DATE_FORMAT(SYSDATE(), '%m'); 
Result: 10 

http://www.sqlines.com/oracle-to-mysql/to_char_datetime

+0

非常感谢你们的答案 – Sachin

1

我非常相信这是一个间隔的问题。修改您的查询,如

"select * 
from bill 
where to_char(day,'mm') between " + mo1 +" and " + mo2+ " and to_char(day,'dd') between " +dob1.getSelectedItem()+ " and "+add1.getSelectedItem()+" 
1

使用准备的陈述而不是语句。这将避免空间问题,引号问题等。此外,它会阻止你从SQL注入漏洞。

问题是参数之间的空间在SQL语句如下:

ResultSet rs = stm.executeQuery("select * from bill where (to_char(day,'mm') between "+mo1+" and "+mo2+")and(to_char(day,'dd') between "+dob1.getSelectedItem()+"and "+add1.getSelectedItem()+")") 

应该

ResultSet rs = stm.executeQuery("select * from bill where (to_char(day,'mm') between "+mo1+" and "+mo2+")and(to_char(day,'dd') between "+dob1.getSelectedItem()+" and "+add1.getSelectedItem()+")") 
+0

解决了这个错误,但之后得到另一个错误,即FUNCTION billing.to_char不存在 – Sachin

相关问题