新增和更新方法类里面的占位符能够跑起来,但是删除和查询单个女神里面的占位符就会报语法错误,将占位符手动改为具体整型数字就可以正确运行。
以下是部分源码。//删除功能代码块
publicvoiddelPeople(Integerid)throwsSQLException{
//获取数据库连接
Connectionconn=DBUtil.getConnection();
//编写sql语法规范的字符串为数据库修改数据
Stringsql=""
+"DELETEFROMtest"
+"WHEREid=?";
PreparedStatementpstmt=conn.prepareStatement(sql);
pstmt.setInt(1,id);
//通过PreparedStatement对象执行SQL语句
pstmt.execute();
}
//查询功能代码块
publicPeopleget(Integerid)throwsException{
//获取数据库连接
Connectionconn=DBUtil.getConnection();
//编写sql语法规范的字符串为数据库修改数据
Stringsql=""
+"SELECT*FROMtest"
+"WHEREid=?";
PreparedStatementpstmt=conn.prepareStatement(sql);
pstmt.setInt(1,id);
//通过PreparedStatement对象的executeQuery方法查询数据库存储的信息
ResultSetrs=pstmt.executeQuery(sql);
Peoplep=null;
while(rs.next()){
p=newPeople();
p.setAge(rs.getInt("age"));
p.setUsername(rs.getString("username"));
p.setId(rs.getInt("id"));
p.setSex(rs.getInt("sex"));
}
returnp;
}
//错误信息
Exceptioninthread"main"com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'?'atline1
atsun.reflect.NativeConstructorAccessorImpl.newInstance0(NativeMethod)
atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
atjava.lang.reflect.Constructor.newInstance(Constructor.java:526)
atcom.mysql.jdbc.Util.handleNewInstance(Util.java:425)
atcom.mysql.jdbc.Util.getInstance(Util.java:408)
atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:943)
atcom.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
atcom.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
atcom.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
atcom.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
atcom.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2497)
atcom.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2455)
atcom.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1369)
atcom.javajdbc.dao.PeopleDao.get(PeopleDao.java:103)
atcom.javajdbc.peopleaction.PeopleAction.main(PeopleAction.java:35)