标签: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; }
真实
标签:column class 不可 结构 识别 表示 date 一个 pst
原文地址:https://www.cnblogs.com/exigeslover/p/12024830.html