以下代码可以查询到数据:
String returnStr="";
String sql="select name from table1 t where t.lot_id in ('tab1','tab2')";
System.out.println(sql);
stmt = conn.prepareStatement(sql);
rset=stmt.executeQuery();
while(rset.next())
{
returnStr= rset.getString(1);
System.out.println("returnStr:"+returnStr
}
rset.close();
st.close();--------------------------------------------------------
但是为何以下代码写法却查不到数据?
String returnStr="‘";
String str=="'tab1','tab2'";
String sql="select name from table1 t where t.lot_id in (?)";
System.out.println(sql);
stmt = conn.prepareStatement(sql);
stmt.setString(1, str);
rset=stmt.executeQuery();
while(rset.next())
{
returnStr= rset.getString(1);
System.out.println("returnStr:"+returnStr
}
rset.close();
st.close();
String returnStr="";
String sql="select name from table1 t where t.lot_id in ('tab1','tab2')";
System.out.println(sql);
stmt = conn.prepareStatement(sql);
rset=stmt.executeQuery();
while(rset.next())
{
returnStr= rset.getString(1);
System.out.println("returnStr:"+returnStr
}
rset.close();
st.close();--------------------------------------------------------
但是为何以下代码写法却查不到数据?
String returnStr="‘";
String str=="'tab1','tab2'";
String sql="select name from table1 t where t.lot_id in (?)";
System.out.println(sql);
stmt = conn.prepareStatement(sql);
stmt.setString(1, str);
rset=stmt.executeQuery();
while(rset.next())
{
returnStr= rset.getString(1);
System.out.println("returnStr:"+returnStr
}
rset.close();
st.close();
是不是些少啦单引号
而你把这个String str="'tab1','tab2'";传递给了那个参数
最后执行的SQL相当于是这样
select name from table1 t where t.lot_id in ('tab1,tab2')";
所以你要写2个问号在里面,分别
String str="tab1";
String str2="tab2";
select name from table1 t where t.lot_id in (?,?)";
stmt.setString(1, str);
stmt.setString(2, str2);
注意,一般符号都是用英文的
if (array != null && array.length != 0) {
sql += " where t.lot_id in ("
for (int i = 0; i < array.length; i++) {
sql += array[i] + ","
}
sql = sql.substring(0,sql.length() - 1) + ")";
}
stmt = conn.prepareStatement(sql);
if (array != null && array.length != 0) {
for (int i = 0; i < array.length; i++) {
stmt.setString(i + 1, array[i]);
}
}
应该是这样
String sql = "select name from table1 t ";
if (array != null && array.length != 0) {
sql += " where t.lot_id in ("
for (int i = 0; i < array.length; i++) {
sql += + "?,"
}
sql = sql.substring(0,sql.length() - 1) + ")";
}
stmt = conn.prepareStatement(sql);
if (array != null && array.length != 0) {
for (int i = 0; i < array.length; i++) {
stmt.setString(i + 1, array[i]);
}
}