Java 将存储在SQL数据库中的ArrayList添加到jForm中的表中
我目前的问题是,我无法为我的酒店管理GUI获取我的房间列表,以显示我的jTable中的房间阵列列表 我目前的代码是: RoomMapper:Java 将存储在SQL数据库中的ArrayList添加到jForm中的表中,java,sql,oracle,swing,arraylist,Java,Sql,Oracle,Swing,Arraylist,我目前的问题是,我无法为我的酒店管理GUI获取我的房间列表,以显示我的jTable中的房间阵列列表 我目前的代码是: RoomMapper: public ArrayList<Room> getRooms(Connection con) { ArrayList<Room> rooms = new ArrayList(); String sqlString1 = "select * from room "
public ArrayList<Room> getRooms(Connection con) {
ArrayList<Room> rooms = new ArrayList();
String sqlString1
= "select * from room "
+ "order by room_id";
String sqlString2 = "SELECT TABLE_NAME FROM USER_TABLES";
PreparedStatement statement;
try {
statement = con.prepareStatement(sqlString1);
ResultSet rs = statement.executeQuery();
int i = 0;
while (rs.next()) {
i++;
System.out.println(rs.getString(1));
System.out.println("just added room nb " + i);
rooms.add(new Room(rs.getInt(1), rs.getInt(2), 0, "stringy string"));
}
statement.close();
} catch (Exception e) {
System.out.println("Fail in RoomMapper - getRooms");
System.out.println(e.getMessage());
}
System.out.println("rooms arraylist size: " + rooms.size());
return rooms;
}
以及我的jTable实现:
public HotelGuiForm() throws ClassNotFoundException, SQLException
{
initComponents();
DefaultTableModel dtm = new DefaultTableModel();
ArrayList<Room> rooms = new ArrayList<>();
Class.forName("oracle.jdbc.driver.OracleDriver");
String stringCon = "jdbc:oracle:thin:@datdb.cphbusiness.dk:1521:dat;user;cphsh241;password;cphsh241";
Connection con = DriverManager.getConnection(stringCon);
java.sql.Statement state = con.createStatement();
ResultSet rs = state.executeQuery("SELECT * FROM Room_Booking");
ResultSetMetaData rsmetadata = rs.getMetaData();
int columns = rsmetadata.getColumnCount();
Vector columns_name;
columns_name = new Vector();
Vector data_rows;
data_rows = new Vector();
for (int i = 1; i < columns; i++)
{
columns_name.addElement(rsmetadata.getColumnName(i));
}
dtm.setColumnIdentifiers(columns_name);
while (rs.next())
{
data_rows = new Vector();
for (int j = 1; j < columns; j++)
{
data_rows.addElement(rs.getString(j));
}
dtm.addRow(data_rows);
}
jTable2.setModel(dtm);
}
public HotelGuiForm()抛出ClassNotFoundException、SQLException
{
初始化组件();
DefaultTableModel dtm=新的DefaultTableModel();
ArrayList房间=新建ArrayList();
类forName(“oracle.jdbc.driver.OracleDriver”);
String stringCon=“jdbc:oracle:thin:@datdb.cphbusiness.dk:1521:dat;用户;cphsh241;密码;cphsh241”;
Connection con=DriverManager.getConnection(stringCon);
java.sql.Statement state=con.createStatement();
ResultSet rs=state.executeQuery(“从房间预订中选择*);
ResultSetMetaData rsmetadata=rs.getMetaData();
int columns=rsmetadata.getColumnCount();
向量列名称;
列_name=新向量();
矢量数据行;
数据_行=新向量();
对于(int i=1;i
每当我运行项目时,我都会遇到一系列jdbc错误,我可以在这里列出:
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:673)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:715)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:385)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:30)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:564)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:233)
at presentation.HotelGuiForm.<init>(HotelGuiForm.java:46)
at presentation.HotelGuiForm.main(HotelGuiForm.java:84)
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.net.ns.NSProtocolStream.negotiateConnection(NSProtocolStream.java:272)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:263)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1360)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:486)
... 8 more
位于oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:673)
位于oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:715)
位于oracle.jdbc.driver.T4CConnection(T4CConnection.java:385)
位于oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:30)
位于oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:564)
位于java.sql.DriverManager.getConnection(DriverManager.java:571)
位于java.sql.DriverManager.getConnection(DriverManager.java:233)
HotelGuiForm.(HotelGuiForm.java:46)
位于presentation.HotelGuiForm.main(HotelGuiForm.java:84)
原因:oracle.net.ns.NetException:侦听器拒绝连接,出现以下错误:
ORA-12505,TNS:侦听器目前不知道连接描述符中给出的SID
位于oracle.net.ns.NSProtocolStream.negotiateConnection(NSProtocolStream.java:272)
位于oracle.net.ns.NSProtocol.connect(NSProtocol.java:263)
位于oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1360)
位于oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:486)
... 8个以上
有没有人看到了内在的问题,因为我没有看到它,这真的让我很烦恼,因为我已经为此工作了几天了
如果有人能帮我解决这个问题,我将不胜感激
谢谢。我不知道你的错误来源,但我可以告诉你,你想一下子做的太多了。如果我是你,我会在一个小的非GUI程序中修复SQL错误,然后只有在它被修复之后,才能将它带到GUI中。否则,你有太多的东西要看,却不知道该去哪里看。想想看,
“分而治之”
。行得通我试过这个,我问了另外一个问题,我一直在问这个错误:错误:找不到或加载主类displayrooms.displayrooms Java结果:1你可以看到我添加了oracle
标记的问题,因为我觉得ORA-12505
错误才是真正需要解决的问题。是的,我也这么认为@JonK,但当我试着读它的时候,我更加困惑了。
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:673)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:715)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:385)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:30)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:564)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:233)
at presentation.HotelGuiForm.<init>(HotelGuiForm.java:46)
at presentation.HotelGuiForm.main(HotelGuiForm.java:84)
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.net.ns.NSProtocolStream.negotiateConnection(NSProtocolStream.java:272)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:263)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1360)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:486)
... 8 more