MySQL服务器:抛出有关查询语法的异常

时间:2014-07-27 05:06:33

标签: mysql

我正在制作一个关于struts框架的项目。 我在使用sql在表中插入数据时从服务器获取异常,我无法找到解决方案。

错误如下:

javax.servlet.ServletException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 
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 ',,,,,,,'yes','yes',,,,'admin')' at line 1

生成错误的代码如下: -

    sql="Insert into field_visit_details (visit_date,block,village,flw_category,
   flw_name,flw_contact_no,aware_zinc,
aware_ors,past_zinc,past_ors,qty_avail_zinc_ten,qty_avail_zinc_twe,qty_avail_zinc_syr,
qty_avail_ors,qty_disp_zinc_ten,qty_disp_zinc_twe,qty_disp_zinc_syr,qty_disp_ors,
stockout_zinc,stockout_ors,diar_cases_seen,diar_cases_reff,diar_deaths_less_than_five,
added_by)
 values 
('"+field_visit_date+"','"+block_row_one+"','"+village_row_one+"','"+flw_category_row_one
+"','"+flw_name_row_one+"','"+flw_contact_no_row_one+"','"+aware_zinc_row_one+"','"+
aware_ors_row_one+"','"+past_zinc_row_one+"','"+past_ors_row_one+"','"+
qty_avail_zinc_ten_row_one+"','"+qty_avail_zinc_twe_row_one+"','"+
qty_avail_zinc_syr_row_one+"','"+qty_avail_ors_row_one+"','"+qty_disp_zinc_ten_row_one
+"','"+qty_disp_zinc_twe_row_one+"','"+qty_disp_zinc_syr_row_one+"','"+
qty_disp_ors_row_one+"','"+stockout_zinc_row_one+"','"+stockout_ors_row_one+
"','"+diar_cases_seen_row_one+"','"+diar_cases_reff_row_one+"','"+diar_deaths_row_one
+"','"+loginid+"')";
            System.out.println(sql);
            int x=stmt.executeUpdate(sql);
            if(x>0)
                SUCCESS="admin";

表结构如下: -

 CREATE TABLE IF NOT EXISTS `field_visit_details` ( 
`field_visit_id` int(11) NOT NULL auto_increment,   
`visit_date` date NOT NULL,   
`block` varchar(100) NOT NULL,   
`village` varchar(100) NOT NULL,   
`flw_category` varchar(45) NOT NULL,   
`flw_name` varchar(100) NOT NULL,   
`flw_contact_no` varchar(13) NOT NULL,   
`aware_zinc` varchar(10) NOT NULL,   
`aware_ors` varchar(10) NOT NULL,   
`past_zinc` varchar(10) NOT NULL,   
`past_ors` varchar(10) NOT NULL,   
`qty_avail_zinc_ten` int(11) NOT NULL,   
`qty_avail_zinc_twe` int(11) NOT NULL,   
`qty_avail_zinc_syr` int(11) NOT NULL,   
`qty_avail_ors` int(11) NOT NULL,  
`qty_disp_zinc_ten` int(11) NOT NULL,   
`qty_disp_zinc_twe` int(11) NOT NULL,   
`qty_disp_zinc_syr` int(11) NOT NULL,   
`qty_disp_ors` int(11) NOT NULL,   
`stockout_zinc` varchar(11) NOT NULL,   
`stockout_ors` varchar(11) NOT NULL,   
`diar_cases_seen` int(11) NOT NULL,   
`diar_cases_reff` int(11) NOT NULL,   
`diar_deaths_less_than_five` int(11) NOT NULL,   
`added_by` varchar(100) NOT NULL,   
PRIMARY KEY  (`field_visit_id`)   ) 
ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

我在控制台中打印时的查询是: -

     Insert into field_visit_details (visit_date,block,village,flw_category,flw_name,
flw_contact_no,aware_zinc,aware_ors,past_zinc,past_ors,qty_avail_zinc_ten,
qty_avail_zinc_twe,qty_avail_zinc_syr,qty_avail_ors,
    qty_disp_zinc_ten,qty_disp_zinc_twe,qty_disp_zinc_syr,qty_disp_ors,stockout_zinc,
    stockout_ors,diar_cases_seen,diar_cases_reff,diar_deaths_less_than_five,added_by)
     values
     ('2014-07-02','ASDASD','','asha','asd+','99','yes','yes','yes','yes',
    '12','12','12','12','12','12','12','12','yes','yes','12','12','12','admin')

但问题是查询是在表中成功插入数据,但服务器仍显示上述错误。

我甚至直接在phpmyadmin中使用了上面打印的查询,并且没有任何问题。 请帮我解决问题。 欢迎任何形式的观点...

1 个答案:

答案 0 :(得分:0)

SQL语句中有语法异常。您发布的错误消息指向它。

因此,您需要更改SQL语句并修复语法错误。为此,您应该重写它以使用示例JDBC PreparedStatement example – Insert a record中的PraparedStatement

在为预准备语句设置参数时,使用适当的数据库列类型set方法。