首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Struts中抛出有关SQL语法的MySQLSyntaxErrorException

在Struts中抛出有关SQL语法的MySQLSyntaxErrorException
EN

Stack Overflow用户
提问于 2014-07-27 05:06:32
回答 1查看 216关注 0票数 1

我正在做一个基于Struts框架的项目。

在使用SQL在表中插入数据时,我从服务器获得异常,无法找到解决方案。

错误如下:

代码语言:javascript
复制
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

生成错误的代码如下所示:

代码语言:javascript
复制
    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";

表结构如下:

代码语言:javascript
复制
 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 ;

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

代码语言:javascript
复制
     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中直接使用了上面打印的查询,并且运行良好,没有任何问题。

EN

回答 1

Stack Overflow用户

发布于 2014-07-27 15:20:17

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

因此,您需要更改SQL语句并修复语法错误。为此,您应该重写它以使用PraparedStatement,就像在示例JDBC PreparedStatement示例-插入记录中一样。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24978090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档