java 如何利用list调用MySQL的数据

我用JFrame类做一个查询窗口,也做了一个stuent表存在MySQL数据库里面,已经把数据库连接好。
如何利用list调用MySQL的数据?
例如窗口里面有个JLabel,内容我想他显示成student表里面“name”字段的字段值“Tom”
该怎么弄,请告诉我思路!!!谢谢
求各路高手!!!!

// 1. 注册驱动
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// Mysql 的驱动

// 2. 获取数据库的连接
java.sql.Connection conn = java.sql.DriverManager.getConnection(
"jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=GBK", "root", null);

// 3. 获取表达式
java.sql.Statement stmt = conn.createStatement();

// 执行插入数据的 SQL
stmt.executeUpdate("insert into MyUser(username, password) values('JDBC 中文测试', '密码')");

// 4. 执行 SQL
java.sql.ResultSet rs = stmt.executeQuery("select * from MyUser");

// 5. 显示结果集里面的数据
while(rs.next()) {
System.out.println(rs.getInt(1));
System.out.println(rs.getString("username"));
System.out.println(rs.getString("password"));
System.out.println();
}

// 6. 释放资源
rs.close();
stmt.close();
conn.close();

请参考//4部分追问

我能问一个个白痴的问题吗?
是不是声明一个JList list 然后把rs赋值给list?

追答

循环 while(rs.next()) {
System.out.println(rs.getInt(1));
System.out.println(rs.getString("username"));
System.out.println(rs.getString("password"));
System.out.println();
}

然后JList是啥//????一般是ArrayList 或者vector,把值放到他们俩里面

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-27
给你一个比较通用而且非常合适的方法:
下面是得到数据库结果后传入一个bean类和数据库结果ResultSet,可以通过get,set方法帮你组装由bean组成的list对象
/**
* @title:createBeanList
* @Description: 组装bean对象集合
* @param clazz
* @param sql
* @param rs
* @throws InstantiationException
* @throws IllegalAccessException
* @throws SQLException
* @throws IllegalArgumentException
* @throws InvocationTargetException
* @return List<Object>
* @throws
*/
public List<Object> createBeanList(Class clazz, ResultSet rs)
throws InstantiationException, IllegalAccessException,
SQLException, IllegalArgumentException, InvocationTargetException {
Object obj = null;
List<Object> objectList = new ArrayList<Object>();
ResultSetMetaData rsmd = rs.getMetaData();
String[] colNames = getColNames(rsmd);
Method[] ms = clazz.getMethods();

while (rs.next()) {
obj = clazz.newInstance();
for (int i = 0; i < colNames.length; i++) {
String colName = colNames[i];
String methodName = "set" + colName;
for (Method m : ms) {
if ((methodName.replace("_", "")).equalsIgnoreCase(m
.getName().replace("_", ""))) {
Type[] type = m.getGenericParameterTypes();
Object colObj = rs.getObject(colName);
if (colObj == null) {
break;
}
m.invoke(obj, objToTargObj(colObj,type[0]));
break;
}
}
}
objectList.add(obj);
}
return objectList;
}

下面是得到数据库结果后传入数据库结果ResultSet,帮你组装由Map<String,String>组成的list对象,
/**
* @title:toList
* @Description: 将结果分装成List,List中包含多条记录的Map记录集
* @param rs
* @return
* @throws SQLException
*/
public List<Map<String, String>> toList(ResultSet rs) throws SQLException {
ResultSetMetaData rsmd = rs.getMetaData();
String[] colNames = getColNames(rsmd);
List<Map<String, String>> datas = new ArrayList<Map<String, String>>();
Map<String, String> data = null;
while (rs.next()) {
data = new HashMap<String, String>();
for (int i = 0; i < colNames.length; i++) {
data.put(colNames[i], objToString(rs.getObject(colNames[i])));
}
datas.add(data);
}
return datas;
}

都是通过反射去实现,所以可以直接使用,至于数据库连接查询,这个就不说了。
第2个回答  2013-11-27
你从数据取出来的数据时Result对象,然后循环读取Result使用getString("name")方法获取表中每一个的student的“name”字段的值,在获取到之后就使用List的add方法添加进list不就可以了嚒。你在生成JLabel的时候将JLabel的文本设置为list中保存的值就行了。
// 4. 执行 SQL
java.sql.ResultSet rs = stmt.executeQuery("select * from MyUser");
List<String> list = new ArrayList<String>();

// 5. 显示结果集里面的数据
while(rs.next()) {
list.add(rs.getString("username"));
}
第3个回答  2013-11-27
你把从数据库中获取到的值全部保存成一个个的Student对象,然后全部add到这个list容器中,最后只要在JLabel中取出Student对象的name值,可以用list.get(i).name,这就是取list容器中第i个student对象的name值。

性能优化之Java多线程批量拆分List导入数据库
优化导入功能,从直接将list数据批量插入MySQL,到分组导入,再到引入多线程批量导入,显著提高了导入效率,实现从1分钟缩短至10秒以内。直接把list怼进Mysql 使用mybatis的批量导入操作,通过底层生成的mapper进行批量插入,解决效率问题,但受限于数据库默认设置,每次sql操作的数据量不能超过4M。分组把list...

java怎么把数据库的东西导入LIST中
本例使用 mysql 数据库,演示将数据库 test 的 tb_users 表中的用户信息存储到 List 中 代码如下:import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;\/\/ ...

用JAVA list集合语句增删改查全部学生信息。
1、首先在电脑上启动数据库 ,在数据库中创建表,下面给出具体的SQL语句。2、然后打开eclipse 创建新项目 JDBCTest,需要导入相关的jar包并构建路径,如图。3、接着创建entity实体层如图对应表中的数据。4、创建数据连接层conn 用于MySQL数据库的连接代码如图 如图。5、创建dao层持久层,在里面编写数据库...

如何用java控制每次从数据库中读取1000条数据到List中?
取数据库的数据是数据库语言完成的。mysql中 : select * from 表名 limit 1000;limit 用法就是从限制取的条数 另外如果你要实现取 第2-5条 可以是 limit 2,6; 我记得好像是 最大数字那条不取的,你可以去试试。sqlserver中不大一样了:select top 1000 * from 表名 如果这要实现取2-...

我的数据存在mysql中,怎样用Java生成矩阵啊?谢谢,着急的等待中
第一,由于你的规则你的矩阵必然是n*n矩阵,你这里n=行数,就是4*4,然后就是给每个元素填值了,这里需要一个for循环调用方法 matrix[i][j] = A(i,j,data)A(int row,int col,list data){ \/\/从data中取出 row 数据 在取出 col数据 \/\/ row 和col 对比 得到 result 矩阵元素...

java中 lucene用纯SQL检索Mysql数据库
java中 lucene用纯SQL检索Mysql数据库 我现在要做的是lucene中创建索引的时候用纯sql语句 不用Hql语句创建例如: elseif(QueryVulnerability.SEARCH_CASE.equals(createType)){ StringBu... 我现在要做的是lucene中 创建索引的时候用纯sql语句 不用Hql 语句创建例如: else if(QueryVulnerability.SEARCH_CASE.equals...

如何用Java实现把excel表中的数据导入到mysql数据库已有的表中
package com.cn.gao;import java.util.List;public class FromExcelToDb { public static void main(String[] args) { \/\/得到表格中所有的数据 List<Stu> listExcel=StuService.getAllByExcel("d:\/\/book.xls");\/*\/\/得到数据库表中所有的数据 List<Stu> listDb=StuService.getAllByDb();*\/...

如何用java将集合的元素到入mysql?
你是说将java中集合的所有元素插入到数据库中吗?List<String> list = new ArrayList<String>();list.add("元素1");list.add("元素2");list.add("元素3");list.add("元素4");for(int i=0;i<list.size();i++){ String item = list.get(i);String sql = "insert into table test...

java编程:用object数组从mysql数据库中读取数据,data11[i][0] = rs...
楼主这是数组越界啊~看看你那2维数组有没有边界值设的比较小,还有确定下 data11=new Object[rsnum][7] ;这个rsnum是否取到了值,是多少,还有rs.next的时候赋值超没超过数组界值,错误发生在你这个文件的第41行,走个断点看看吧

java 在表格中显示mysql查询结果中(包含有空值)的显示问题
直接方案 不要用“new String()”,改成String.valueOf()第二套方案在写 Vector的类型可以改成:Vector<Object> rs.getObject(i+1)Vector类型 Vector should be avoided; it’s only in the library for legacy code support 这个类型在java1.1就有了,至今已经不用了,留着它是为了,防止破坏老...

相似回答