您的位置:程序门 -> java -> j2se / 基础类



请问怎样将数据库access中的数据读入到vector中,并且打印出来?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请问怎样将数据库access中的数据读入到vector中,并且打印出来?
发表于:2007-01-16 08:30:30 楼主
由于我数据库中一table有8个字段,所以我设计了两个vector,一个vector用来读取table中的数据,另一个vector用来存储前一个vector.可程序运行的时候发现每次只能读取table中的最后一行数据.请问怎么解决?
部分程序入下:
public   void   addrow()
{

vector   v=new   vector(8);
//int   count=0;
try   {
class.forname( "sun.jdbc.odbc.jdbcodbcdriver ");
string   url= "jdbc:odbc:addressbook ";
connection   conn;
try   {
conn   =   drivermanager.getconnection(url);
statement   stmt   =   conn.createstatement();
string   sql= "select   *   from   lianxiren ";
resultset   rs=stmt.EXECutequery(sql);
while(rs.next())
{
//将数据库里的数据添加到v中.
v.add(0,   rs.getstring(1));
v.add(1,   rs.getstring(2));
v.add(2,   rs.getstring(3));
v.add(3,rs.getstring(4));
v.add(4,   rs.getstring(5));
v.add(5,   rs.getstring(6));
v.add(6,   rs.getstring(7));
v.add(7,   rs.getstring(8));
//count++;

}
//content.insertelementat(v,   count);
content.add(v);
rs.close();
stmt.close();
conn.close();
}   catch   (sqlexception   e)   {
//   todo   auto-generated   catch   block
e.printstacktrace();
}

}   catch   (classnotfoundexception   e)   {
//   todo   auto-generated   catch   block
e.printstacktrace();
}
//system.out.println(content.size());
//system.out.println(count);
}
发表于:2007-01-16 11:05:331楼 得分:0
你用键值对应一个记录,到了下个记录还是这个键,当然会被覆盖了,所以是最后一条记录
while(rs.next())
{
//将数据库里的数据添加到v中.
v.add(0,   rs.getstring(1));
v.add(1,   rs.getstring(2));
v.add(2,   rs.getstring(3));
v.add(3,rs.getstring(4));
v.add(4,   rs.getstring(5));
v.add(5,   rs.getstring(6));
v.add(6,   rs.getstring(7));
v.add(7,   rs.getstring(8));
//count++;

}
发表于:2007-01-16 11:30:262楼 得分:0
以下伪代码,可以参考一下。
jre   5.0及以上。

class   tbl_name   {
    private   ..col1;
    ....              
    private   ..col8;

    pubic   ..   getcol1()   {
    }

    ....

    public   vector <tbl_name>   query(connection   conn,   ....)   {
          vector <tbl_name>   rows   =   new   vector <tbl_name> ();
          try   {
            statement   stmt   =   conn.createstatement();
            string   sql= "select   *   from   lianxiren ";
            resultset   rs=stmt.EXECutequery(sql);
            while(rs.next())
          {
                tbl_name   row   =   new   tbl_name();
            //将数据库里的数据添加到v中.
                row.col1   =   rs.getstring(1);
                ....
                row.col2   =   rs.getstring(8);
                rows.add(row);
            }
}
rs.close();
stmt.close();
}   catch   (sqlexception   e)   {
//   todo   auto-generated   catch   block
e.printstacktrace();
}


}
发表于:2007-01-16 20:35:433楼 得分:0
to:yifuzhiming(haha)   .对,说得对,那应该怎样修改呢?
发表于:2007-01-16 22:13:594楼 得分:0
谢谢irvine007(┣━┫rvine)   提供的代码,按照你给的代码,我写了个例子程序,可最后得到的结果不是我存如的数据.query()函数是不是要返回一个vector啊?最后取出vector中的数据就可以了,是这样的吗?我试了,返回的数据不对.
还有,在query()函数里,对每一个变量都赋值了,而由返回函数getcol1()等等可以得到并打印出相应的值,可我运行的时候打出来的都是空值(null),请问是怎么回事呢?想了几天了,还是没搞好,帮帮忙了:),谢谢.
发表于:2007-01-17 09:52:165楼 得分:0
public   void   addrow()
{

//int   count=0;
try   {
class.forname( "sun.jdbc.odbc.jdbcodbcdriver ");
string   url= "jdbc:odbc:addressbook ";
connection   conn;
try   {
conn   =   drivermanager.getconnection(url);
statement   stmt   =   conn.createstatement();
string   sql= "select   *   from   lianxiren ";
resultset   rs=stmt.EXECutequery(sql);
while(rs.next())
{
vector   v=new   vector(8);
//将数据库里的数据添加到v中.
v.add(0,   rs.getstring(1));
v.add(1,   rs.getstring(2));
v.add(2,   rs.getstring(3));
v.add(3,rs.getstring(4));
v.add(4,   rs.getstring(5));
v.add(5,   rs.getstring(6));
v.add(6,   rs.getstring(7));
v.add(7,   rs.getstring(8));
//count++;
content.add(v);
}
//content.insertelementat(v,   count);
rs.close();
stmt.close();
conn.close();
}   catch   (sqlexception   e)   {
//   todo   auto-generated   catch   block
e.printstacktrace();
}

}   catch   (classnotfoundexception   e)   {
//   todo   auto-generated   catch   block
e.printstacktrace();
}
//system.out.println(content.size());
//system.out.println(count);
}


快速检索

最新资讯
热门点击