我现在要用java连接数据库查询这样一个sql |
|
select * from tablename where id in (list.get(0),list.get(1)…..)
改成这样可以吧 |
|
可以,用or也可以,我不是问这个关键字,我是想问括号里这个应该怎么写,不可能像这样写…. |
|
string strsql = “select * from tablename where id in (?)”;
preparedstatement pstmt = conn.preparestatement(strsql); string param=””; for(int i:list){ param+=i+”,”; } param=param.substring(0,param.length()-1); pstmt.setstring(1,param); resultset rs = pstmt.executequery(); |
|
但是我list中的元素是Integer类型的,而且表中的id也是bigint,这种方法也是可以的吗 |
|
循环拼sql 语句。
|
|
楼主是不会写ResultSet里的数据解析吗。
|
|
那是什么东西 |
|
我也想到该用循环,但是不知道该怎么弄,因为数据类型不统一 |
|
你先写的试试看,
|
|
20分 |
既然你能成功用Integer类型取到bigint类型的id,应该就没溢出,这样应该可以,试试咯 |
是的吧地方以后
|
|
for循环 拼接 in后面的SQL。
|
|
应该输出3个才对,怎么只有一个1 |
|
找不出原因啊,为什么没输出完
|
|
如果是拼接字符串呢,应该怎么处理?
|
|
一直用框架写sql,很久没有这么写了,不敢贸然说, |
|
楼主,你可以debug一下看看你拼接的sql语句是否有问题,我模拟了一下你的代码
class ConnectJDBC{ public void connectMySql(){ String url="jdbc:mysql://localhost:3306/test"; String username="root"; String password="root"; try { Class.forName("com.mysql.jdbc.Driver"); Connection con=DriverManager.getConnection(url,username,password); PreparedStatement pstmt=con.prepareStatement("select * from userdata where id in(?)"); String param="1,2,3"; pstmt.setString(1,param); ResultSet rs=pstmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt("id")); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 得到的拼接结果是:select * from userdata where id in(“”1,2,3″”); |
|
20分 |
楼主 ,你要循环读取list数据拼接sql的话,办法是很多的,我就写了个最容易想到的给你
class ConnectJDBC{ public void connectMySql(){ List<Integer> list=new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); String str1="select * from userdata where id in("; StringBuffer sb=new StringBuffer(); for(int i=0;i<list.size();i++){ sb.append(list.get(i)+","); } String str2=sb.toString(); str2=str2.substring(0,str2.length()-1); String str3=")"; String sql=str1+str2+str3; String url="jdbc:mysql://localhost:3306/test"; String username="root"; String password="root"; try { Class.forName("com.mysql.jdbc.Driver"); Connection con=DriverManager.getConnection(url,username,password); Statement stmt=con.createStatement(); ResultSet rs=stmt.executeQuery(sql); while(rs.next()){ System.out.println(rs.getInt("id")); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |
先定义一个String 字符串写sql语句。后者差不多可以调用
|