Java连接MySQL数据库,数据展示在JTable
"Java编程将MySQL数据库中的数据展示在JTable组件中" 在这个Java程序中,我们看到如何从MySQL数据库中获取数据并将其显示在Java Swing应用中的JTable组件上。以下是关键知识点的详细说明: 1. **Java与MySQL连接**: - 首先,程序使用`Class.forName()`方法加载MySQL JDBC驱动(com.mysql.jdbc.Driver),这是连接到MySQL数据库的前提。 - 接着,通过`DriverManager.getConnection()`方法建立与MySQL服务器的连接。连接字符串包含数据库URL(jdbc:mysql://localhost:3306/xiong),用户名(root)和密码(218524)。URL中的“xiong”是数据库名称。 2. **SQL查询**: - 使用创建的`Connection`对象创建`Statement`对象(`ps=ct.createStatement();`),用于执行SQL语句。 - SQL查询语句`"select * from students"`用于选取`students`表中的所有列和行。 3. **结果集处理**: - `Statement`对象的`executeQuery()`方法执行SQL查询并返回一个`ResultSet`对象,其中包含了查询结果。 - `ResultSet`对象可以按行遍历,每行数据代表一个记录。 4. **数据展示在JTable**: - `rowData`和`columnNames`是两个`Vector`对象,分别用于存储JTable的行数据和列名。 - 在示例中,列名被初始化为“ѧ”, "", "Ա", "", "", "ϵ"。这可能代表学生的字段,如“学号”,“姓名”,“年龄”,“性别”,“成绩”等。 - 通常,应从`ResultSet`中迭代每一行,将每一行的值放入一个`Vector`对象(如`hang`),然后将这个`Vector`添加到`rowData`中。在实际代码中这部分没有完成。 - `JTable`的构造函数接受`rowData`和`columnNames`作为参数来初始化表格。 - `JScrollPane`用于在窗口中添加`JTable`,提供滚动功能。 5. **Swing组件**: - `Test2`类继承自`JFrame`,表示它是一个Swing应用的主窗口。 - `jt`是`JTable`实例,`jsp`是`JScrollPane`实例,它们都在`Test2`的构造函数中定义。 6. **最佳实践**: - 在实际开发中,推荐使用`PreparedStatement`代替`Statement`以防止SQL注入,并提高代码可读性和性能。 - 数据库连接和资源应在使用后关闭,以避免资源泄漏。可以使用`try-with-resources`语句来确保这一点。 这段代码演示了如何在Java Swing应用程序中集成数据库操作,将查询结果动态加载到JTable组件中展示。然而,代码目前并未完全实现数据填充的功能,需要进一步完善对`ResultSet`的处理。
*
*
*
* */
package com.test1;
import java.util.*;
import java.sql.*;
import javax.swing.*;
public class Test2 extends JFrame{
//rowdata用来存放行数据
//columnNames存放列名
//Vector 是一个类实现动态数组,和ArryList相似,但是它大小可以变化
Vector rowData,columnNames;
JTable jt=null;
JScrollPane jsp=null;
//定义几个连接数据库需要的东西
Statement ps=null;
Connection ct=null;
ResultSet rs=null;
public static void main(String[]args){
Test2 test2=new Test2();
}
//构造函数
columnNames=new Vector();
//设置列名
columnNames.add("学号");
columnNames.add("姓名");
columnNames.add("性别");
columnNames.add("年龄");
columnNames.add("籍贯");
columnNames.add("系别");
//下边这些注释的代码应该换为取数据库里面取数据的
// //rowData可以存放多行
rowData=new Vector();
// Vector hang=new Vector();
// hang.add("sp001");
// hang.add("孙悟空");
// hang.add("男");
// hang.add("500");
// hang.add("花果山");
// hang.add("少林派");
//
// //加入到rowData
// rowData.add(hang);
try{
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
ct=DriverManager.getConnection("jdbc:mysql://localhost:3306/xiong","root","218524");
ps=ct.createStatement();
rs=ps.executeQuery("select * from students");
剩余9页未读,继续阅读
- 粉丝: 65
- 资源: 71
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展