【发布时间】:2016-05-23 01:55:38
【问题描述】:
我正在尝试将来自 MySQL 服务器的表数据显示到我正在创建的 JFrame 中。尽管其他一切都很好,但我似乎无法从相应列中获取正确的 TIME 数据。
下面是我的代码以及输出示例!
package pkginterface;
import java.awt.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import java.time.*;
public class Staff_Info extends JFrame
{
public Staff_Info()
{
ArrayList columnNames = new ArrayList();
ArrayList data = new ArrayList();
String url = "jdbc:mysql://localhost:3306/cinema";
String userid = "root";
String password = "password";
String sql = "SELECT * FROM TimeTable";
try (Connection connection = DriverManager.getConnection( url, userid, password );
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( sql ))
{
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
for (int i = 1; i <= columns; i++)
{
columnNames.add( md.getColumnName(i) );
}
while (rs.next())
{
ArrayList row = new ArrayList(columns);
for (int i = 1; i <= columns; i++)
{
row.add( rs.getObject(i) );
}
data.add( row );
}
}
catch (SQLException e)
{
System.out.println( e.getMessage() );
}
Vector columnNamesVector = new Vector();
Vector dataVector = new Vector();
for (int i = 0; i < data.size(); i++)
{
ArrayList subArray = (ArrayList)data.get(i);
Vector subVector = new Vector();
for (int j = 0; j < subArray.size(); j++)
{
subVector.add(subArray.get(j));
}
dataVector.add(subVector);
}
for (int i = 0; i < columnNames.size(); i++ )
columnNamesVector.add(columnNames.get(i));
// Create table with database data
JTable table = new JTable(dataVector, columnNamesVector)
{
public Class getColumnClass(int column)
{
for (int row = 0; row < getRowCount(); row++)
{
Object o = getValueAt(row, column);
if (o != null)
{
return o.getClass();
}
}
return Object.class;
}
};
JScrollPane scrollPane = new JScrollPane( table );
getContentPane().add( scrollPane );
JPanel buttonPanel = new JPanel();
getContentPane().add( buttonPanel, BorderLayout.SOUTH );
pack();
}
public static void main(String[] args)
{
Staff_Info frame = new Staff_Info();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setVisible(true);
}
}
And here you can see the above output!
我正在使用 MySQL Workbench 和 NetBeans 开发 Ubuntu 14.04。
timetable_starttime 和 timetalbe_endtime 字段在它们的表创建中都有 TIME 数据类型,只要一个有效的插入字段。
Here you can see the MySQL Select * statement for that table.
我发现这与 Epoch 时间有关,但我无法找到问题的实际解决方案!
任何帮助将不胜感激!
感谢您的宝贵时间!
【问题讨论】:
-
你能分享你的表定义吗?
-
显然
timetable_starttime和timetalbe_endtime数据类型应该是TIME而不是DATE -
这是表定义! i.imgur.com/XwnhjMa.jpg ...我的意思是我的主要帖子上的时间不是日期...
-
@Sarriman - 请不要分享图片,您可以复制该文本并将其粘贴到您的问题中
标签: java mysql swing jdbc epoch