今天在做项目的时候,使用的jdbc底层增加,然后出现了个问题,找了好久没有找出来是什么问题,后来在网上查了下,发现别人都说是?写成了中文的了,于是我就返回来看,没看出来,继续找,前前后后折腾了估计有半小时还是找不出来,所有的问题都排除了,又回到了?上,难道真的是我写成了中文的了吗,重新切换输入法输入?的时候发现果然是这里的错,?写成了中文的了,大家以后一定得仔细点,别走我的老路了!下面的代码:
错误的代码:
public int addAccount(Account account) { int rel=0; String sql="insert INTO account(name,types,items_id,property_id,money,create_date,bz) " + "VALUES(?,?,?,?,?,?,?)"; List<Object>prams=new ArrayList<Object>(); prams.add(account.getName()); prams.add(account.getTypes()); prams.add(account.getItem_id()); prams.add(account.getProperty_id()); prams.add(account.getMoney()); prams.add(account.getCreate_date()); prams.add(account.getBz()); System.out.println(sql); try { rel=connDbBean.executeUpdate(sql, prams); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }finally{ connDbBean.closeAll(); } return rel; }
正确的代码:
public int addAccount(Account account) { int rel=0; String sql="insert INTO account(name,types,items_id,property_id,money,create_date,bz) " + "VALUES(?,?,?,?,?,?,?)"; List<Object>prams=new ArrayList<Object>(); prams.add(account.getName()); prams.add(account.getTypes()); prams.add(account.getItem_id()); prams.add(account.getProperty_id()); prams.add(account.getMoney()); prams.add(account.getCreate_date()); prams.add(account.getBz()); System.out.println(sql); try { rel=connDbBean.executeUpdate(sql, prams); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }finally{ connDbBean.closeAll(); } return rel; }
他两的区别就在于sql语句中的问号,前者是中文输入法下的问号,后者是英文输入法下的问号,虽然看起来区别不是很大,但是程序是会报错的!