Java论坛网»Java技术»怎么将Resultset里的内容在窗口表格中显示出来?
怎么将Resultset里的内容在窗口表格中显示出来?
问?:
怎么能像Delphi一样直接把结果反映到一个表格中,并在表格中编辑呢?
答!: 1:
没有直接的方法的,只有一步一步来
get data from database->tablemodel->display->edit->update database
get data from database->tablemodel->display->edit->update database
答!: 2:
谢谢,我是Java新手,这个流程看你写的明白了,可是具体的实现我不会啊,不敢很过分的要求你把代码告诉我,能不能有什么好的网站或某篇文章对此有介绍,把地址告诉我吧,新手不知道该怎么找。
答!: 3:
package table;
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class inensshow extends JFrame {
private Connection connection;
private Statement statement;
private ResultSet resultSet;
private ResultSetMetaData rsMetaData;
private JTable table;
private JTextArea inputQuery;
private JButton submitQuery;
public inensshow()
{
super( "input the sql querry,see the result" );
String url = "jdbc:mysql://localhost:3306/asd";
String username = "root";
String password = "";
//加???程序以?接数据?
try {
Class.forName( "org.gjt.mm.mysql.Driver" );
}
//捕?加???程序?常
catch ( ClassNotFoundException cnfex ) {
System.err.println(
"load the mysql-jdbcdriver error" );
cnfex.printStackTrace();
System.exit( 1 ); // terminate program
}
//捕??接数据??常
//如果数据??接成功,?建立GUI
//SQL?句
try{
connection = DriverManager.getConnection(
url, username, password );
}catch ( SQLException sqlex ) {
System.err.println( "无法?接数据?" );
sqlex.printStackTrace();
System.exit( 1 ); // terminate program
}
String test="show tables;";
inputQuery = new JTextArea( test, 4, 30 );
submitQuery = new JButton( "Querry" );
//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 inensshow app =
new inensshow();
app.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent e )
{
app.shutDown();
System.exit(0);
}
}
);
}
}
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class inensshow extends JFrame {
private Connection connection;
private Statement statement;
private ResultSet resultSet;
private ResultSetMetaData rsMetaData;
private JTable table;
private JTextArea inputQuery;
private JButton submitQuery;
public inensshow()
{
super( "input the sql querry,see the result" );
String url = "jdbc:mysql://localhost:3306/asd";
String username = "root";
String password = "";
//加???程序以?接数据?
try {
Class.forName( "org.gjt.mm.mysql.Driver" );
}
//捕?加???程序?常
catch ( ClassNotFoundException cnfex ) {
System.err.println(
"load the mysql-jdbcdriver error" );
cnfex.printStackTrace();
System.exit( 1 ); // terminate program
}
//捕??接数据??常
//如果数据??接成功,?建立GUI
//SQL?句
try{
connection = DriverManager.getConnection(
url, username, password );
}catch ( SQLException sqlex ) {
System.err.println( "无法?接数据?" );
sqlex.printStackTrace();
System.exit( 1 ); // terminate program
}
String test="show tables;";
inputQuery = new JTextArea( test, 4, 30 );
submitQuery = new JButton( "Querry" );
//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 inensshow app =
new inensshow();
app.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent e )
{
app.shutDown();
System.exit(0);
}
}
);
}
}
答!: 4:
使用代理模型,去查查书吧.
答!: 5:
谢谢,对我的帮助非常大。
相关JAVA教程:
Netbeans编写JSP时放页面元素的问题
如何控制JTabbedPane的滚动按钮?
使用java代码创建树
struts上传文件出错!
关于工厂模式的问题
请问怎样用jsp调用华为3com的NBXOCX.OCX控件,越详细越好最好贴上代码。在线等
做个高人气网站 帮忙选个域名
求助:用reflect实现远程调用的例子
applicationContext.xml文件出错
请问如何在border上加一组button?
我该怎么办,请问?
求助,在java中,如何生成静态的html文件