java中的sql:WHERE name=variable
这是我的代码:java中的sql:WHERE name=variable,java,sql,Java,Sql,这是我的代码: public static List GetList(String myname) { . . ResultSet result = stmt.executeQuery("SELECT * FROM authors WHERE name = ?"); result.setString(myname); } 我想选择其中name=myname(myname是函数的输入) 我也试过这样的方法: WHERE name = @myname 但是它不起作
public static List GetList(String myname) {
.
.
ResultSet result = stmt.executeQuery("SELECT * FROM authors WHERE name = ?");
result.setString(myname);
}
我想选择其中name=myname(myname是函数的输入)
我也试过这样的方法:
WHERE name = @myname
但是它不起作用://p>试试这个:
ResultSet result = stmt.executeQuery("SELECT * FROM authors WHERE name = " + myname);
好的,更好的方法是使用
PreparedStatement
,以避免SQL注入
:-
PreparedStatement stmt = con.prepareStatement("SELECT * FROM authors WHERE name = ?");
stmt.setString(1, myname);
ResultSet res = stmt.executeQuery();
但是,为了解决您的问题,您可以使用字符串连接:-
stmt.executeQuery("SELECT * FROM authors WHERE name = '" + myname + "'");
您不在结果上设置值,而是在语句上设置值:
如果我没弄错的话,你最好在这里准备好陈述:
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM authors WHERE name = ?");
stmt.setString(1, myname);
ResultSet result = stmt.executeQuery();
这不是好的做法
PreparedStatement
是推荐的方法。
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM authors WHERE name = ?");
stmt.setString(1, myname);
ResultSet result = stmt.executeQuery();