我有两个Vector就像下面一样;
private Vector<Vector<Object>> vector1 = new Vector<Vector<Object>>();
private Vector<Vector<Object>> vector2 = new Vector<Vector<Object>>();
一些方法填充上面的向量并创建了向量;
向量1
[1000, 0, 100100, 1]
[1000, 1, 100100, 1]
[1000, 2, 100100, 1]
[1000, 3, 100100, 1]
vector 2
[1000, 0, ppp, yyy]
[1000, 1, zzz, xxx]
你可以看到矢量2少了两行。 Vector的第0和第1列对我很重要。我在sql查询中使用它们。当行不在向量2中时,我需要从DB中删除向量1相关列。
我的代码是:
for(int i =0; i != vector1.size(); i++){
if (i>vector2.size()){
System.out.println("detected");
try{
ResultSet rs;
Statement stmt;
ResultSetMetaData rsmtd;
String query = "USE DBST\n" +
"delete from Mtable where Me='"+vector1.elementAt(i).elementAt(0).toString()+"' and P='"+vector1.elementAt(i).elementAt(1).toString()+"'";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://192.168.130.100;" + "databaseName=DBST;" + "user=" + "user1" + ";" + "password=" + "user1pass" + ";";
Connection con = DriverManager.getConnection(connectionUrl);
stmt = con.createStatement();
rs = stmt.executeQuery(query);
}
catch(SQLException se){
se.printStackTrace();
}
catch(Exception e){
e.printStackTrace();
}
}
else{
System.out.println(vector1.elementAt(i).elementAt(0).toString()+vector1.elementAt(i).elementAt(1).toString());
}
}
当我运行此代码时,没有任何反应。剩余行(向量1的第2行和第3行)未从DB中删除。总是来声明并打印当前vector1行的所需格式。
我该如何处理?
谢谢
答案 0 :(得分:1)
就比较而言,您可以执行以下操作来比较每个向量中的第1个和第2个条目,然后抛出从DB中找不到的向量。
List<ArrayList<Integer>> vector1 = new ArrayList<ArrayList<Integer>>();
List<ArrayList<Integer>> vector2 = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> tmp = new ArrayList<Integer>();
tmp.add(1000);
tmp.add(0);
tmp.add(100100);
tmp.add(1);
vector1.add(tmp);
tmp = new ArrayList<Integer>();
tmp.add(1000);
tmp.add(1);
tmp.add(100100);
tmp.add(1);
vector1.add(tmp);
tmp = new ArrayList<Integer>();
tmp.add(1002);
tmp.add(2);
tmp.add(100100);
tmp.add(1);
vector1.add(tmp);
tmp = new ArrayList<Integer>();
tmp.add(1000);
tmp.add(0);
tmp.add(100102);
tmp.add(2);
vector2.add(tmp);
tmp = new ArrayList<Integer>();
tmp.add(1000);
tmp.add(1);
tmp.add(100100);
tmp.add(1);
vector2.add(tmp);
System.out.println(vector1);
System.out.println(vector2);
Integer[] vec3 = new Integer[2];
Integer[] vec4 = new Integer[2];
boolean flag = false;
for (ArrayList<Integer> vec1Tmp : vector1) {
flag = false;
vec3[0] = vec1Tmp.get(0);
vec3[1] = vec1Tmp.get(1);
for (ArrayList<Integer> vec2Tmp : vector2) {
vec4[0] = vec2Tmp.get(0);
vec4[1] = vec2Tmp.get(1);
if ( Arrays.equals(vec3, vec4) ) {
flag = true;
break;
}
}
if ( !flag ) {
// do your deletion here
System.out.println(vec1Tmp);
}
}