当我执行下面的代码时:打印的结果是
0------name
1------name
2------name
3------name
4------name
小弟不明白,为什么没有打印真正的用户的名字,而是“name”?
public class Test {
public static void main(String[] args) {
Connection con = null;
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//建立连接
con = DriverManager.getConnection(
"jdbc:mysql://localhost/wms_flex_db", "root", "root");
//创建语句
PreparedStatement st = con
.prepareStatement("select ? from tb_person ");
//设置
st.setString(1, "name");
//执行语句
ResultSet sets = st.executeQuery();
int count = 0;
while (sets.next()) {
System.out.print(count + "------" + sets.getString(1));
System.out.println();
count++;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

解决方案 »

  1.   

    PreparedStatement st = con
    .prepareStatement("select ? from tb_person ");
    //设置
    st.setString(1, "name");
    这两句有点问题吧,st.setString(1, "name");这一句一般是用来设置条件的,如果你要只要查询name还不如这样PreparedStatement st = con
    .prepareStatement("select name from tb_person ");有必要添加麻烦吗?
      

  2.   


    应该是因为这种参数设置方式形成了。如:select "name" from tb_person
      

  3.   


    PreparedStatement st = con.prepareStatement("select name from tb_person ");
    // 条件才可以用setXXX()
      

  4.   


    PreparedStatement st = con.prepareStatement("select name from tb_person ");
    // 条件才可以用setXXX()
      

  5.   


    PreparedStatement st = con.prepareStatement("select name from tb_person ");
    // 条件才可以用setXXX()