数据库某表中有3条记录,且表有5个字段,运行下面的程序为什么全是打印15,而不是5,15,交替打印,请指教
谢谢了
import java.sql.*;
import javax.swing.*;
import java.util.*;
public class TestJDBC { public TestJDBC() {
} public static void main(String[] args) {
Connection con = null;
Statement sta = null;
ArrayList arr = new ArrayList();
ArrayList arrTemp = new ArrayList();
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null,"数据库加载驱动失败");
ex.printStackTrace();
}
try
{
con = DriverManager.getConnection("jdbc:odbc:MyTest");
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null,"数据库连接失败");
ex.printStackTrace();
}
try
{ sta = con.createStatement();
String sql = "Select * FROM StudentInfo";
ResultSet rs = sta.executeQuery(sql);
while(rs.next())
{
arrTemp.add(rs.getString(1));
arrTemp.add(rs.getString(2));
arrTemp.add(rs.getString(3));
arrTemp.add(rs.getString(4));
arrTemp.add(rs.getString(5));
arr.add(arrTemp);
}
rs.close();
sta.close();
con.close(); ArrayList list = new ArrayList();
for(int i = 0;i<arr.size();i++)
{
list = (ArrayList)arr.get(i);
System.out.println(list.size());
System.out.println(arrTemp.size());
} }
catch(Exception ex)
{
ex.printStackTrace();
} }
}
谢谢了
import java.sql.*;
import javax.swing.*;
import java.util.*;
public class TestJDBC { public TestJDBC() {
} public static void main(String[] args) {
Connection con = null;
Statement sta = null;
ArrayList arr = new ArrayList();
ArrayList arrTemp = new ArrayList();
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null,"数据库加载驱动失败");
ex.printStackTrace();
}
try
{
con = DriverManager.getConnection("jdbc:odbc:MyTest");
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null,"数据库连接失败");
ex.printStackTrace();
}
try
{ sta = con.createStatement();
String sql = "Select * FROM StudentInfo";
ResultSet rs = sta.executeQuery(sql);
while(rs.next())
{
arrTemp.add(rs.getString(1));
arrTemp.add(rs.getString(2));
arrTemp.add(rs.getString(3));
arrTemp.add(rs.getString(4));
arrTemp.add(rs.getString(5));
arr.add(arrTemp);
}
rs.close();
sta.close();
con.close(); ArrayList list = new ArrayList();
for(int i = 0;i<arr.size();i++)
{
list = (ArrayList)arr.get(i);
System.out.println(list.size());
System.out.println(arrTemp.size());
} }
catch(Exception ex)
{
ex.printStackTrace();
} }
}
解决方案 »
- 一个类继续了JFrame,继承Runnable的类如何调用且定义了自己的方法
- 提一个关于 flip() 和 rewind() 的问题。
- 在预编译中 select top ? ....里的? 如何赋值?
- 哪位好心人可以帮帮我?哪里有jbuilder9的入门教程下载呀?我找了好久找不到
- 关于native2ascii方法
- 如何计算两个date变量之间相差多少天?
- 类的继承与造型,想不明白?大虾帮忙!
- 谁能给我《Java 2 核心技术 卷I:基础知识》的源代码,本人的随书光盘丢了,谢谢了!急
- 【源码】文本编码转换器
- System.out.println(new Date()); 打印问题
- java如何使用主板上的小小喇叭?
- 静态方法不可以调用非静态变量
所以
System.out.println(list.size());
System.out.println(arrTemp.size());
输出的是一个东西的size,也就是arrTemp的size其次
while(rs.next())
{
arrTemp.add(rs.getString(1));
arrTemp.add(rs.getString(2));
arrTemp.add(rs.getString(3));
arrTemp.add(rs.getString(4));
arrTemp.add(rs.getString(5));
arr.add(arrTemp);
}
每次循环都将结果装进同一个arrTemp中,arrTemp始终保持同一个对象,循环一次arrTemp的size增加5
3次正好是15,而3次循环向arr中装进了3个arrTemp,这3个arrTemp其实是一个对象
import javax.swing.*;
import java.util.*;
public class TestJDBC { public TestJDBC() {
} public static void main(String[] args) {
Connection con = null;
Statement sta = null;
ArrayList arr = new ArrayList();
ArrayList arrTemp = new ArrayList();
try
{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver ");
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null, "数据库加载驱动失败 ");
ex.printStackTrace();
}
try
{
con = DriverManager.getConnection( "jdbc:odbc:MyTest ");
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null, "数据库连接失败 ");
ex.printStackTrace();
}
try
{ sta = con.createStatement();
String sql = "Select * FROM StudentInfo ";
ResultSet rs = sta.executeQuery(sql);
while(rs.next())
{
arrTemp.add(rs.getString(1));
arrTemp.add(rs.getString(2));
arrTemp.add(rs.getString(3));
arrTemp.add(rs.getString(4));
arrTemp.add(rs.getString(5));
arr.add(arrTemp.clone() );
arrTemp.clear();
}
rs.close();
sta.close();
con.close(); ArrayList list = new ArrayList();
for(int i = 0;i <arr.size();i++)
{
list = (ArrayList)arr.get(i);
System.out.println(list.size());
System.out.println(arrTemp.size());
} }
catch(Exception ex)
{
ex.printStackTrace();
} }
}改了之后打印应为:5,0,5,0,5,0