这听起来有点奇怪,但我想创建一个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
?
谢谢
答案 0 :(得分:1)
这是不可能的。 Statement
和PreparedStatement
代表不同的事物。
Statement
用于调用不同的SQL查询,您可以在不知道要使用的SQL查询的情况下创建Statement
实例。PreparedStatement
在创建时会得到一个SQL查询,如果可能,驱动程序会尝试预编译查询。您可以填写不同的参数并重复使用它,但是您无法更改查询,它始终使用创建时给定的参数。所以我担心你必须重构你的代码,没有简单的方法如何在这两者之间切换。
在大多数情况下,使用PreparedStatement
是首选,因为它允许您以安全的方式将参数传递给SQL查询,而不会有SQL injection的风险。