码迷,mamicode.com
首页 > 其他好文 > 详细

PreparedStatement的参数问题(待解决)

时间:2019-12-11 21:28:39      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:column   class   不可   结构   识别   表示   date   一个   pst   

对于一个数据库,我在对数据进行删除操作的时候出现了问题

确切的说是PreparedStatement的问题

 

初步代码是这样的结构:

        String sql = new String("DELETE FROM flight WHERE ? = ? ");
        int res;
        PreparedStatement pstmt = connect.prepareStatement(sql);
        pstmt.setString(1, "flightNo");    
        pstmt.setString(2, flight.getFlightNo());    

我起初想把WHERE语句中写成很多 ? = ?的结构,这样可以传入很多自定义参数,不过都是不识别的。

然后进行了错误排查,发现错误出现在等号前的?中,把等号前的问好改成flightNo,手敲进去就好了

初步猜测是插入参数默认是等号前不能作为参数,因为sql语句中这里表示column

是colunm = 值的对应关系,所以只能是手打进去。

所以sql语句的参数不可以是column项的。

 

具体代码如下:此为更改后的版本

@Override
    public int delete(Flight flight) throws SQLException {
        // TODO Auto-generated method stub
        Connection connect = DBUtil.getConnection();
        String sql = new String("DELETE FROM flight WHERE flightNo = ? ");
        int res;
        PreparedStatement pstmt = connect.prepareStatement(sql);
        pstmt.setString(1, flight.getFlightNo());
        System.out.println(sql);
        res = pstmt.executeUpdate();
        return res;
    }

 

真实

PreparedStatement的参数问题(待解决)

标签:column   class   不可   结构   识别   表示   date   一个   pst   

原文地址:https://www.cnblogs.com/exigeslover/p/12024830.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!