`

Jdbc例子(Jpanel)

    博客分类:
  • JDBC
阅读更多

import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class JdbcTest extends JFrame {


private Connection connection;
private Statement statement;
private ResultSet resultSet;
private ResultSetMetaData rsMetaData;

//GUI变量定义
private JTable table;
private JTextArea inputQuery;
private JButton submitQuery;

public JdbcTest()
{
//Form的标题
super( "输入SQL语句,按查询按钮查看结果。" );

String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "root";
//加载驱动程序以连接数据库
try {
Class.forName( "com.mysql.jdbc.Driver" );
connection = DriverManager.getConnection(
url, username, password );
}
//捕获加载驱动程序异常
catch ( ClassNotFoundException ex ) {
System.err.println("装载 JDBC/ODBC 驱动程序失败。" );
ex.printStackTrace();
System.exit( 1 ); // terminate program
}
//捕获连接数据库异常
catch ( SQLException sqlex ) {
System.err.println( "无法连接数据库" );
sqlex.printStackTrace();
System.exit( 1 ); // terminate program
}
//如果数据库连接成功,则建立GUI
//SQL语句
String test="SELECT * FROM book";
inputQuery = new JTextArea( test, 4, 30 );
submitQuery = new JButton( "查询" );
//Button事件
submitQuery.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e )
{
getTable();
}
}
);

JPanel topPanel = new JPanel();
topPanel.setLayout( new BorderLayout() );
//将"输入查询"编辑框布置到 "CENTER"
topPanel.add( new JScrollPane( inputQuery), BorderLayout.CENTER );
//将"提交查询"按钮布置到 "SOUTH"
topPanel.add( submitQuery, BorderLayout.SOUTH );
table = new JTable();
Container c = getContentPane();
c.setLayout( new BorderLayout() );
//将"topPanel"编辑框布置到 "NORTH"
c.add( topPanel, BorderLayout.NORTH );
//将"table"编辑框布置到 "CENTER"
c.add( table, BorderLayout.CENTER );
getTable();
setSize( 500, 300 );
//显示Form
show();
}

private void getTable()
{
try {
//执行SQL语句
String query = inputQuery.getText();
statement = connection.createStatement();
resultSet = statement.executeQuery( query );
//在表格中显示查询结果
displayResultSet( resultSet );
}
catch ( SQLException sqlex ) {
sqlex.printStackTrace();
}
}

private void displayResultSet( ResultSet rs )
throws SQLException
{
//定位到达第一条记录
boolean moreRecords = rs.next();
//如果没有记录,则提示一条消息
if ( ! moreRecords ) {
JOptionPane.showMessageDialog( this,
"结果集中无记录" );
setTitle( "无记录显示" );
return;
}
Vector columnHeads = new Vector();
Vector rows = new Vector();
try {
//获取字段的名称
ResultSetMetaData rsmd = rs.getMetaData();
for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
columnHeads.addElement( rsmd.getColumnName( i ) );
//获取记录集
do {
rows.addElement( getNextRow( rs, rsmd ) );
} while ( rs.next() );
//在表格中显示查询结果
table = new JTable( rows, columnHeads );
JScrollPane scroller = new JScrollPane( table );
Container c = getContentPane();
c.remove(1);
c.add( scroller, BorderLayout.CENTER );
//刷新Table
c.validate();
}
catch ( SQLException sqlex ) {
sqlex.printStackTrace();
}
}


private Vector getNextRow( ResultSet rs,
ResultSetMetaData rsmd )
throws SQLException
{
Vector currentRow = new Vector();
for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
currentRow.addElement( rs.getString( i ) );
//返回一条记录
return currentRow;
}

public void shutDown()
{
try {
//断开数据库连接
connection.close();
}
catch ( SQLException sqlex ) {
System.err.println( "Unable to disconnect" );
sqlex.printStackTrace();
}
}

public static void main( String args[] )
{
final JdbcTest app =
new JdbcTest();
app.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent e )
{
app.shutDown();
System.exit( 0 );
}
}
);
}
}

分享到:
评论

相关推荐

    Java基于Swing+JDBC的房屋租赁系统设计

    总结来说,这个项目涵盖了Java桌面应用开发的多个方面,包括UI设计、数据库操作、数据持久化、异常处理和测试等,是学习和实践Java Swing和JDBC技术的好例子。通过这样的系统,开发者可以深入理解如何在Java环境中...

    JTable 练习例子exa

    它可能会介绍如何将数据库中的数据加载到`TableModel`,或者如何用`JDBC`(Java Database Connectivity)来处理数据库交互。 `Table_01`可能是一个Java类文件,实现了`JTable`的实例化和布局。在这个类中,开发者...

    sql.rar_mindmx8

    JPanel panel = new JPanel(); add(panel); textField = new JTextField(20); panel.add(textField); insertButton = new JButton("Insert"); insertButton.addActionListener(new ActionListener() { @...

    1小时学会通过Java Swing Design设计java图形化

    首先,Java Swing 提供了一套组件(JComponents),如按钮(JButton)、文本框(JTextField)、面板(JPanel)等,这些组件可以用来构建用户交互的基本元素。Swing组件是轻量级的,意味着它们不依赖于操作系统,因此...

    DAO程序设计相关点

    在这个例子中,我们看到了DAO模式如何与JDBC和前端UI相结合,实现一个简单的数据插入功能。在实际项目中,DAO模式通常会进一步扩展,包括更多的数据操作方法、更完善的事务管理和错误处理机制。

    java swing实现的mysqlplus源代码

    Swing包含了大量的组件,如JFrame(主窗口)、JPanel(面板)、JTable(表格)等,以及布局管理器如FlowLayout、BorderLayout、GridLayout和GridBagLayout,用于组织组件的位置。 在这个MySQLPlus项目中,开发者...

    java分栏技术,一个很实用得小程序

    在这个例子中,你需要将`url`、`username`和`password`替换为实际的数据库连接信息。如果“fen”是一个自定义数据结构,你可能需要根据实际情况创建相应的类和方法来处理数据。 综上所述,这个Java小程序可能包含了...

    Java界面连接MySQL

    JPanel panel = new JPanel(new GridLayout(5, 2)); panel.add(new JLabel("主机")); hostField = new JTextField(); panel.add(hostField); // 添加其他字段... connectButton = new JButton("连接"); ...

    简单的用Java编界面访问数据库实现删改等功能的源码

    - **JPanel**:作为容器,用于存放其他组件。 - **JTabbedPane**:提供了选项卡式布局的功能,可以容纳多个面板或组件。 ### 2. JDBC (Java Database Connectivity) JDBC 是 Java 开发工具包中用于连接数据库的...

    登录界面连接数据库.pdf

    在这个例子中,`Login`类实现了这个接口,并重写了`actionPerformed`方法,当用户点击“登录”或“取消”按钮时,该方法会被调用。 4. **数据库连接**: - 使用了`java.sql.Connection`、`Statement`和`ResultSet`...

    基于JAVA的学生管理系统源代码.pdf

    4. **数据库操作**:系统与数据库连接,实现了查询、删除、添加和修改学生成绩的功能,这通常涉及到JDBC(Java Database Connectivity)技术。 5. **输入输出流**:可能用于读取或写入文件,比如保存或加载学生数据...

    java开发坦克大战.pdf

    描述中提到的`Window013.java`和`MyPanel`类就是这样的例子,`MyPanel`继承自JPanel,并覆盖了`paint()`方法,用于自定义绘图逻辑。 绘图技术在坦克大战中扮演了重要角色。Java的Graphics类是绘图的核心,它提供了...

    java 连接数据库实现用户登录功能

    JPanel panel = new JPanel(new FlowLayout()); JLabel usernameLabel = new JLabel("用户名:"); JLabel passwordLabel = new JLabel("密码:"); usernameField = new JTextField(20); passwordField = new ...

    Java学生管理系统.pdf

    - 使用JDBC-ODBC桥接驱动在现代Java开发中已不再推荐,更建议使用JDBC驱动直接连接到特定数据库,如MySQL、Oracle等,这通常提供更好的性能和稳定性。 总结起来,Java学生管理系统展示了如何使用Swing构建用户界面...

    java Swing 代码列子

    在本Java Swing代码例子中,我们关注的是一个ATM登陆取款小程序的实现,这涉及到Swing组件的使用、事件处理以及基本的程序结构。 1. **Swing组件**: - `JFrame`:这是所有Swing应用程序的基础,它代表了窗口。在...

    Java swing实现学生信息管理系统源码.zip

    - `JPanel`:用于组合其他组件,如`StudentManageInterFrm.class`, `SchoolClassManageInterFrm.class`等可能包含多个`JPanel`来组织UI。 - `JTable`:可能用于展示学生或班级的列表,方便用户浏览和操作。 - `...

Global site tag (gtag.js) - Google Analytics