Java 数据库不会显示结果吗?
在我的Java程序中,运行Java 数据库不会显示结果吗?,java,database,jframe,Java,Database,Jframe,在我的Java程序中,运行Addplaylist.Java文件时遇到问题。它打开的很好…但是对于我来说,要想添加一个播放列表,我需要数据库中每个成员的名字 我已经输入了一些System.out.println(“”)来检查我在文件中的位置,出于某种原因,我只在addPlaylist()GUI中输入了它。我试着调试它并找到错误,但我找不到 正在从主GUI调用此文件-我知道数据库中有值,并且连接正在工作,因为我在另一个文件中使用了它 这是我的addPlaylist.java: package GUI
Addplaylist.Java
文件时遇到问题。它打开的很好…但是对于我来说,要想添加一个播放列表,我需要数据库中每个成员的名字
我已经输入了一些System.out.println(“”)来检查我在文件中的位置,出于某种原因,我只在addPlaylist()GUI中输入了它。我试着调试它并找到错误,但我找不到
正在从主GUI调用此文件
-我知道数据库中有值,并且连接正在工作,因为我在另一个文件中使用了它
这是我的addPlaylist.java
:
package GUI;
import DBconnection.connection;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/**
*
* @author james
*/
public class addPlaylist extends JFrame implements ActionListener{
private Container mainCon = this.getContentPane();
private JPanel formPanel = new JPanel();
private JPanel paidPanel = new JPanel();
/*ALL USER INPUT FIELDS*************************/
//Buttons
private static JButton submitPlaylist = new JButton("Add Playlist");
/*TEXT FIELDS BOXES *******************************/
private JLabel lblPlaylistName = new JLabel("Playlist Name: ");
private JTextField txtPlaylistName = new JTextField("", 15);
/*TEXT FIELDS BOXES *******************************/
/*COMBO BOXES *******************************/
private JLabel lblNames = new JLabel();
private JComboBox comNames = new JComboBox();
/*COMBO BOXES *******************************/
/*DECLARED VARIABLES ****************************/
// private String membersData = "";
/*DECLARED VARIABLES ****************************/
public addPlaylist(){
super("Add a Playlist");
this.setBounds(400, 500, 315,400);
mainCon.add(formPanel);
/** BEGINNING OF FORM ************/
formPanel.add(lblPlaylistName);
formPanel.add(txtPlaylistName);
//Combobox (Names)
formPanel.add(lblNames);
formPanel.add(comNames);
//comNames.addActionListener(this);
//txtPlaylistName.addActionListener(this);
System.out.println("In add playlist");
}
public void actionPerformed(ActionEvent action) {
System.out.println("In Action Performed");
/**ADD DATABASE CONNECTIONS*****************/
/****** Set the default code - needed for SQL statements *************/
Connection conDB = null;
Statement stmt = null;
ResultSet membersData = null;
/** GET MYSQL DETAILs ---------**/
String url = connection.geturl();
String username = connection.getUsername();
String password = connection.getPassword();
try{
System.out.println("In Try Statement");
/****** DEFAULT MYSQL DRIVERS **************************/
//load the MYSQL driver
Class.forName(connection.getDriver());
conDB = DriverManager.getConnection(url, username, password);
//create statement
stmt = conDB.createStatement();
/****** DEFAULT MYSQL DRIVERS **************************/
String sqlSelect = "SELECT membId, name, memberType FROM members";
membersData = stmt.executeQuery(sqlSelect);
System.out.println("After executed");
while(membersData.next()){
// comNames.addItem(membersData.getString("name"));
System.out.println("In while loop");
String membId = membersData.getString("membId");
System.out.println(membId);
// System.out.println(membersData.getString("name"));
// System.out.println(membersData.getString("memberType"));
}
//membersData.close();
}
catch(SQLException er){
System.out.println("Error was: " + er);
} catch (ClassNotFoundException ex) {
System.out.println("SECOND ERROR: " + ex);
}
}
}
因此,为了解决这个问题,我将显示组合框所需的所有代码放入名为showCombo()
的函数中,包括数据库连接和结果集等。然后我在addPlaylist(){}
方法中调用了showCombo()
像这样:
public void showCombo(){
/****** Set the default code - needed for SQL statements *************/
Connection conDB = null;
Statement stmt = null;
ResultSet membersData = null;
/** GET MYSQL DETAILs ---------**/
String url = connection.geturl();
String username = connection.getUsername();
String password = connection.getPassword();
try{
System.out.println("In Try Statement");
/****** DEFAULT MYSQL DRIVERS **************************/
//load the MYSQL driver
Class.forName(connection.getDriver());
conDB = DriverManager.getConnection(url, username, password);
//create statement
stmt = conDB.createStatement();
/****** DEFAULT MYSQL DRIVERS **************************/
String sqlSelect = "SELECT membId, name, memberType FROM members";
membersData = stmt.executeQuery(sqlSelect);
System.out.println("After executed");
while(membersData.next()){
comNames.addItem(membersData.getString("name"));
// System.out.println("In while loop");
// String membId = membersData.getString("membId");
// System.out.println(membId);
// System.out.println(membersData.getString("name"));
// System.out.println(membersData.getString("memberType"));
}
//membersData.close();
}
catch(SQLException er){
System.out.println("Error was: " + er);
} catch (ClassNotFoundException ex) {
System.out.println("SECOND ERROR: " + ex);
}
}
你需要为你的JFrame设置一个动作监听器,在addPlaylist()构造函数->中设置按钮的动作监听器(submitPlaylist.addActionListener(this);@Praveen-我已经添加了一个答案。你知道为什么我的JComboBox
中有两项被选中了吗?每个项目有两个副本,如果你点击其中一个,那么另一个会被勾选?!为JComboBox 1创建一个ItemListener,并在第一个记录更新时更新下一个记录。感谢您的帮助:)@Praveen-但我意识到,在数据库中,我有两个相同的记录:S出于某种原因,每次您单击一个与另一个同名的记录时,它也会勾选另一个!