从数据库删除数据的问题

时间:2011-07-13 10:28:57

标签: database hibernate postgresql

我正在使用Hibernate访问我的数据库。我想根据标准删除一组字段。我的数据库是PostgreSQL,我的Java代码是:

public void deleteAttr(String parameter){
    Configuration cfg = new Configuration();
    cfg.configure(resource.getString("hibernate_config_file"));
    SessionFactory sessionFactory = cfg.buildSessionFactory();
    session = sessionFactory.openSession(); 
    Transaction tx = session.beginTransaction();
    tx.begin();
    String sql = "delete from attribute where timestamp > to_date('"+parameter+"','YYYY-MM-DD')"
    session.createSQLQuery(sql);
    tx.commit();
}

该方法运行,但不会从数据库中删除数据。我还检查了PgAdmin中的sql语句,但是它有效,但不是代码。为什么?有人帮助我吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

这是因为你正在创建一个查询,但是你没有执行它:

String sql = "delete from attribute where timestamp > to_date('"+parameter+"','YYYY-MM-DD')"
Query query = session.createSQLQuery(sql);
query.executeUpdate();

你应该使用绑定的命名参数而不是字符串连接来传递查询中的参数:它通常更有效,它更强大,但最重要的是,它不会打开SQL注入攻击的大门。