这是我建的表:
我想把uid这一列查出来,但在用PreparedStatement时遇到了问题
这是我的代码:
public String[] selectColumn(String colName) throws SQLException {
String[] tmp = new String[100]; //用来暂存数据
int num = 0; //记录数据个数
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = getConnection(); //获取链接
String sql = "SELECT ? FROM member_info";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, colName);
rs = pstmt.executeQuery();
int index = 0;
while(rs.next()) {
tmp[index++] = rs.getString("uid");
num++;
}
}catch(Exception e) {
e.printStackTrace();
}finally {
release(rs,pstmt,conn);
}
String[] result = new String[num]; //返回的结果数组
for (int i=0; i<num; i++) {
result[i] = tmp[i];
}
return result;
}
selectColum("uid")运行出来的结果是:
但我用Statement却能查出正确结果
这是代码(几乎一样,就是把PreparedStatemen改成了Statement)
public String[] selectColumn() throws SQLException {
String[] Uid = new String[100];
int num = 0;
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = getConnection();
String sql = "SELECT uid FROM member_info";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
int index = 0;
while(rs.next()) {
Uid[index++] = rs.getString("uid");
num++;
}
}catch(Exception e) {
e.printStackTrace();
}finally {
release(rs,stmt,conn)
}
String[] result = new String[num];
for (int i=0; i<num; i++) {
result[i] = Uid[i];
}
return result;
}
求大神解决一下
用prepareStatement注入的时候 执行的时候搜索的字段都是 SELECT 'uid ' FROM member_info 这样返回的全部都是uid 得写成 SELECT uid FROM member_info才可以
String sql = "SELECT ? FROM member_info"
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, colName); //这个可能写进去可能不对,可能变为字符串了
//sql 可能变为了 SELECT 'uid ' FROM member_info
你试下
String sql = "SELECT uid FROM member_info"
pstmt = conn.prepareStatement(sql);