-1

这听起来有点奇怪,但我想PreparedStatement
在拥有Statement. 这是因为我的项目几乎是 50% ,直到现在我已经使用了Statement.

在我的 Database 类中,我有一个构造函数,每次我需要使用 Mysql 服务器时连接到 mysql :

public class Database 
{
    private Statement m_statement = null;
    private Connection m_connection = null;
    private PreparedStatement m_prepared = null;  // that one was added just now 

    private static final String ACCOUNTS_TABLE = "CheckingAccountsTable";
    private static final String PERSONNEL_TABLE = "PersonnelTable";
    // private static final String 


    public Database() throws ClassNotFoundException
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            this.m_connection = DriverManager.getConnection("jdbc:mysql://localhost","root","root");
            this.m_statement = this.m_connection.createStatement();

        }

        catch (SQLException s)
        {
            System.out.println("SQL statement is not executed! 2!");
        }

    }


}




// from here I have something like 20 methods that are based on the Statement

改变一切将需要很多我没有的时间。所以,我的问题是:

我可以使用我创建的语句PreparedStatement吗?或创建 PreparedStatement基于Statement

谢谢

4

1 回答 1

1

这是不可能的。StatementPreparedStatement代表不同的事物。

  • Statement用于调用不同的 SQL 查询,您在Statement不知道要使用什么 SQL 查询的情况下创建实例。
  • PreparedStatement在创建时给定一个 SQL 查询,如果可能,驱动程序会尝试预编译该查询。您可以填写不同的参数并重复使用,但不能更改查询,它始终使用创建时给定的参数。

所以恐怕你必须重构你的代码,没有简单的方法可以在这两者之间切换。

在大多数情况下,使用PreparedStatement是首选,因为它允许您以安全的方式将参数传递给 SQL 查询,而不会冒SQL 注入的风险。

于 2012-08-08T16:41:10.403 回答