总之我想要的是一种将动态参数插入sqlite数据库语句以使我的类动态化的方法......你可能会问动态如何? 好的我会回答你让我假设我的数据库里面有这个表
CREATE TABLE "Users" (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`username` TEXT,
`password` TEXT )
我有一个名为 MySqlHandler 的类来处理所有与sqlite相关的操作,如Selection,Insertion ..等等。
在我们的类里面我有fetch_rows_as_array,我想让它动态化以处理所有插入命令public class MySQl {
Connection conn;
public PreparedStatement preparedStatement;
// get connected with the database it only called from LoginController
public void Connect(){
try{
Class.forName("org.sqlite.JDBC");
// Get a live Connection to the database
conn = DriverManager.getConnection("jdbc:sqlite:database.db");
System.out.println("connected with success!");
}catch(Exception e){
System.out.println(e);
}
}
// this method will handle any kind of selection from our database
public void fetch_rows_as_array(String query){
try{
// create a statement
preparedStatement = conn.prepareStatement(query);
// Execute Query and return arrays of results
ResultSet rs = preparedStatement.executeQuery(query);
while(rs.next())
System.out.println(rs.getString(1) + rs.getString(2));
}catch(Exception e){
e.printStackTrace();
}
}
}
//请注意上面的代码并不完全正确,只是为了解释
现在方法fetch_rows_as_array可以行动得很好但是让我们说在一种情况下我想得到所有列...而在另一种情况下我想从同一种方法获得所有列的用户名= someValue ..在最后一种情况下,我想得到用户名= somevalue和密码=?的所有列,但是对于我来说,使用相同的函数执行这三种情况都非常重要。
为了让我实现这一目标......我想我应该尝试这样的事情(来自另一个班级)
MySQl sql = new MySQl();
sql.Connect();
try {
sql.prstmt.setString(1, "admin");
sql.prstmt.setString(2, "123");
sql.fetch_rows_as_array("select username,password from Users where username=? and password=?");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
原来我的代码错了......
简而言之,我想要一种方法从类外部向语句添加参数..换句话说我想将动态参数插入到sqlite数据库语句中
我希望你明白我的观点。