|
我现在要用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语句。后者差不多可以调用
|
|

