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

我用JFrame类做一个查询窗口,也做了一个stuent表存在MySQL数据库里面,已经把数据库连接好。如何利用list调用MySQL的数据?例如窗口里面有个JLabel... 我用JFrame类做一个查询窗口,也做了一个stuent表存在MySQL数据库里面,已经把数据库连接好。
如何利用list调用MySQL的数据?
例如窗口里面有个JLabel,内容我想他显示成student表里面“name”字段的字段值“Tom”
该怎么弄,请告诉我思路!!!谢谢
求各路高手!!!!
展开
 我来答
百度网友8dd2c3e41
2013-11-27 · TA获得超过431个赞
知道小有建树答主
回答量:439
采纳率:0%
帮助的人:325万
展开全部
// 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,把值放到他们俩里面
百度网友3ce83a3
2013-11-27 · 超过20用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:42.4万
展开全部
给你一个比较通用而且非常合适的方法:
下面是得到数据库结果后传入一个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;
}

都是通过反射去实现,所以可以直接使用,至于数据库连接查询,这个就不说了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幽静孤雨下
2013-11-27 · TA获得超过187个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:118万
展开全部
你从数据取出来的数据时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"));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HHPpeace888
2013-11-27 · TA获得超过566个赞
知道小有建树答主
回答量:529
采纳率:66%
帮助的人:376万
展开全部
你把从数据库中获取到的值全部保存成一个个的Student对象,然后全部add到这个list容器中,最后只要在JLabel中取出Student对象的name值,可以用list.get(i).name,这就是取list容器中第i个student对象的name值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式