我在此代码上遇到问题:String charitysql=“select wardName,charityRoomID FROM tbl_charityward,tbl_charityroom2
where tbl_charityward.charitywardid=tbl_charityroom2.charitywardid”;
try {
pst = conn.prepareStatement(charitysql);
rs = pst.executeQuery();
while (rs.next()) {
String wardname = rs.getString("wardName");
cb_ward2.addItem(wardname);
String roomid = rs.getString("charityRoomID");
cb_room2.addItem(roomid);
}
}
catch(Exception e) {
JOptionPane.showMessageDialog(null, e);
}
这是我的表结构:tbl_charityward
charityWardID int NOT NULL AUTO_INCREMENT,
wardName varchar(20)、
status varchar(20)、
PRIMARY KEY(charityWardID)
tbl_charityroom2
charityRoomID INT NOT NULL AUTO_INCREMENT,
状态varchar(20),
charityWardID INT,
主键(charityRoomID,charityWardID),
外键(charityWardID)引用tbl_charityward(charityWardID)
这是我的表,其值为:tbl_charityward
+----------+--------+-------+
charityWardID wardName status
+------------+------+
1......外科手术..打开..
......2.......Obygine..打开..
......3......儿科..开..
+----------+--------+--------+
tbl_charityroom2
+----------+--------+
charityRoomID status charitywardid
+-----------+--------+
.....1......Open...1......1......
.....2......Open...1......
.....3......Open...2......
+
我有2个组合框:
cb_ward2=其中包含wardname
cb_room2=其中包含charityroomid
如果从
cb_ward2
中选择一个wardName,则cb_room2
将显示相应的charityroomid。
示例:
上不会出现
我选择surgical
并且charityroomid=1,2
将出现在CB_ROOM2
上,
并且当我选择obygine
时,charityroomid=3
将只出现在CB_ROOM2
上,
但是当我选择peditatrial
时,CB_ROOM2charityroomid
我正在使用Netbeans和MYSQL
编辑:
import java.sql.*;<br>
import javax.swing.*;<br>
public class addBed extends javax.swing.JFrame {
Connection conn = null;
ResultSet rs = null;
PreparedStatement pst = null;
/**
* Creates new form addBed
*/
public addBed() {
initComponents();
}
void loadcombo() {
try {
String charitysql = "SELECT wardName, charityRoomID FROM tbl_charityward, tbl_charityroom2 WHERE tbl_charityward.charityWardID = ?";
pst = conn.prepareStatement(charitysql);
pst.setInt(1,tbl_charityroom2.charityWardID);
rs = pst.executeQuery();
while (rs.next()) {
cb_ward2.addItem(rs.getString(1));
cb_room2.addItem(rs.getString(2));
}
}
catch(Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
private void formWindowOpened(java.awt.event.WindowEvent evt) {
conn = myconn.ConnectDb();
loadcombo();
}
private void btn_add2ActionPerformed(java.awt.event.ActionEvent evt) {
}
尝试使用arrayList!!它会给你一种像推动一样的效果
类似这样的东西
ArrayList<String> categories = new ArrayList<>();
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
System.out.println("\ntrying connection");
conn = DriverManager.getConnection("jdbc:mysql://localhost/products?user=root&password=");
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT DISTINCT categorie FROM product");
while (rs.next()) {
categories.add(rs.getString(1));
}
for (String item : categories) {
ComboBoxCategorie.addItem(item);
}
} catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
} finally {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException sqlEx) {
} // ignore
stmt = null;
}
}
您可以忽略catch和finally子句!!关闭stmt即可
由于您的基本需求是将数据显示在两个组合框
中,您可以这样做:
可以使用LoadCombo()
加载带有数据库值的CB_WARD2
组合框。
void loadcombo() {
try
{
Connection conn=null;
PreparedStatement pst=null;
ResultSet rs=null;
// Your database connections
String charitysql = "SELECT wardName FROM tbl_charityward";
pst = conn.prepareStatement(charitysql);
rs = pst.executeQuery();
while(rs.next()){
cb_ward2.addItem(rs.getString(1));
}
con.close();
}
catch(Exception e)
{
System.out.println("Error"+e);
}
}
现在可以在CB_Ward2
上使用ActionListener
作为:
cb_ward2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
try
{
Connection con=null;
PreparedStatement pst=null,pst1=null;
ResultSet rs=null,rs1=null;
//your database connection
Object name=cb_ward2.getSelectedItem();
pst=con.preparedStatement("select charityWardID from tbl_charityward where wardName=?");
pst.setObject(1,name);
rs= pst.executeQuery();
if(rs.next())
{
pst1=con.preparedStatement("select charityRoomID from tbl_charityroom2 where charityWardID=?");
pst1.setInt(1,rs.getInt(1));
rs1=pst1.executeQuery();
while(rs1.next()){
cb_room2.addItem(rs1.getInt(1));
}
}
con.close();
}
catch(Exception e)
{
System.out.println("GG"+e);
}
}
});
您正在使用的方式不是PreparedStatement的正确使用方式
这样做
String charitysql = "SELECT wardName, charityRoomID FROM tbl_charityward,tbl_charityroom2
WHERE tbl_charityward.charityWardID = ?";
pst = conn.prepareStatement(charitysql);
pst.setInt(1,tbl_charityroom2.charityWardID);
rs = pst.executeQuery();
所以,我有一个奇怪的问题,我从组合框列表中选择一个项目,为了填充第二个组合框,我必须首先从第一个组合框中再次选择单词,而不是从项目列表中,而是单词本身。只有这样,代码才会注册我选择了该项目。我拥有的代码是简单的$variable.SelectedItem。参见下面的代码; 我想做的就是从下拉列表中选择位置“医院”,然后第二个名为“$ComboBox_Printer”的组合框填充我服务器中的打印机名
问题内容: 我有一个看起来像这样的mysql表: 我需要一个查询来选择具有不同的第2列和第3列的所有行,例如,我希望此示例的输出如下所示: 我已经找到了一些有关如何执行此操作的示例,但它们在每一列上的选择都是不同的。 问题答案: 假设第一列是唯一的,则可以执行以下操作: 看到它在线运行:sqlfiddle
问题内容: 是否可以在一列中选择2列并合并它们? 例子: 问题答案: 是的,就像您所做的那样: 如果查询数据库,您将得到正确的答案。 发生的事情是您要求表达。一个非常简单的表达式只是一个列名,一个更复杂的表达式中可以包含公式等。
我已经实现了,这样我的船舶列表就会根据国家和船舶类型进行更改,但问题是我无法选择任何船舶。 你知道我哪里出了问题吗? 上面是Controller类中的。 上面是视图类中的setter。
问题内容: 我试图在单独的mixin文件中包含常规样式/技巧,可以在需要时将其应用于任何项目。其中一些样式需要多个元素才能协同工作。 例如: 实际上,mixin可以工作,但是生成的css可以将mixin与主代码分开,即使它们的选择器相同。当我开始添加更多此类文件时,它的缺点是丑陋的CSS和较大的文件大小。 无论如何,我可以做到这一点,以便可以合并相同的选择器吗?像这样: 问题答案: 不能。Sass
我有一个列表类型的组合框。我通过datacontext绑定了ItemsSource和ItemSelected。如果所选项目已经更改,我会显示一条弹出消息,确认用户的操作。单击“确定”后,选择会发生变化。但是在点击“取消”时,选择应该被取消,而先前的项目应该被保留。下面是绑定到combobox的SelectedItem的属性。 组合框在弹出窗口中。那么Dispatcher对象在这种情况下能工作吗?