import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;import java.sql.Statement;
import javax.swing.*;
import javax.swing.ComboBoxEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;import javax.swing.SwingConstants;
public class DeleteStaff implements ActionListener
{
JDialog dialog;
//JTextField tf=new JTextField();
JComboBox combo=null;
int[] data;
public DeleteStaff(JFrame jf)
{
dialog=new JDialog(jf,"Staff Delete");
Container dialogPane = dialog.getContentPane();
dialogPane.setLayout(new GridLayout(2,2));
dialogPane.add(new JLabel("Please input StaffNo:",SwingConstants.CENTER));
// dialogPane.add(tf);
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection("jdbc:odbc:MS","test","1234");
Statement stmt;
stmt = con.createStatement();
ResultSet rs=stmt.executeQuery("Select * From Person");
int j=0;
System.out.print("b");
while(rs.next())
{
j++;
}
System.out.println("c");
rs.close();
ResultSet r=stmt.executeQuery("Select * From Person");
int n;
n=j;
System.out.println("n"+n);
data=new int[n]; j=0;
while(r.next())
{
data[j]=r.getInt("ID");
j++;
System.out.println("ssssssss");
System.out.println("data[j]:"+data[j]);//这里的data[j]怎么是0? }
String[] data1=new String[n];
for(j=0;j<n;j++)
{
data1[j]=String.valueOf(data[j]);
System.out.println(data1[j]);
}
combo=new JComboBox(data1);
combo.setEditable(true);
ComboBoxEditor editor=combo.getEditor();
combo.configureEditor(editor, "please choose or input the ID");
dialogPane.add(combo);
JButton b1=new JButton("EnSure");
dialogPane.add(b1);
JButton b2=new JButton("Cancle");
dialogPane.add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
dialog.setBounds(200,150,500,100);
dialog.getRootPane().setDefaultButton(b1);
dialog.setVisible(true);
stmt.close();
con.close();
}
catch(Exception ex){}
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("EnSure"))
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:MS","test","1234");
String sq="DELETE FROM Person WHERE ID=?";
PreparedStatement pstmt=con.prepareStatement(sq);
int ID=Integer.parseInt(combo.getSelectedItem().toString());
// int ID=Integer.parseInt(tf.getText());
pstmt.setInt(1, ID);
pstmt.executeUpdate();
pstmt.close();
con.close();
JOptionPane.showMessageDialog(dialog,"Delete Success","Success",JOptionPane.INFORMATION_MESSAGE);
}
catch(Exception ex){}
}
else if(cmd.equals("Cancle"))
{
dialog.dispose();
}
}
}
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;import java.sql.Statement;
import javax.swing.*;
import javax.swing.ComboBoxEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;import javax.swing.SwingConstants;
public class DeleteStaff implements ActionListener
{
JDialog dialog;
//JTextField tf=new JTextField();
JComboBox combo=null;
int[] data;
public DeleteStaff(JFrame jf)
{
dialog=new JDialog(jf,"Staff Delete");
Container dialogPane = dialog.getContentPane();
dialogPane.setLayout(new GridLayout(2,2));
dialogPane.add(new JLabel("Please input StaffNo:",SwingConstants.CENTER));
// dialogPane.add(tf);
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection("jdbc:odbc:MS","test","1234");
Statement stmt;
stmt = con.createStatement();
ResultSet rs=stmt.executeQuery("Select * From Person");
int j=0;
System.out.print("b");
while(rs.next())
{
j++;
}
System.out.println("c");
rs.close();
ResultSet r=stmt.executeQuery("Select * From Person");
int n;
n=j;
System.out.println("n"+n);
data=new int[n]; j=0;
while(r.next())
{
data[j]=r.getInt("ID");
j++;
System.out.println("ssssssss");
System.out.println("data[j]:"+data[j]);//这里的data[j]怎么是0? }
String[] data1=new String[n];
for(j=0;j<n;j++)
{
data1[j]=String.valueOf(data[j]);
System.out.println(data1[j]);
}
combo=new JComboBox(data1);
combo.setEditable(true);
ComboBoxEditor editor=combo.getEditor();
combo.configureEditor(editor, "please choose or input the ID");
dialogPane.add(combo);
JButton b1=new JButton("EnSure");
dialogPane.add(b1);
JButton b2=new JButton("Cancle");
dialogPane.add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
dialog.setBounds(200,150,500,100);
dialog.getRootPane().setDefaultButton(b1);
dialog.setVisible(true);
stmt.close();
con.close();
}
catch(Exception ex){}
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("EnSure"))
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:MS","test","1234");
String sq="DELETE FROM Person WHERE ID=?";
PreparedStatement pstmt=con.prepareStatement(sq);
int ID=Integer.parseInt(combo.getSelectedItem().toString());
// int ID=Integer.parseInt(tf.getText());
pstmt.setInt(1, ID);
pstmt.executeUpdate();
pstmt.close();
con.close();
JOptionPane.showMessageDialog(dialog,"Delete Success","Success",JOptionPane.INFORMATION_MESSAGE);
}
catch(Exception ex){}
}
else if(cmd.equals("Cancle"))
{
dialog.dispose();
}
}
}
当然是0了
你的代码while(r.next())
{
data[j]=r.getInt("ID");
j++;
System.out.println("ssssssss");
System.out.println("data[j]:"+data[j]);//这里的data[j]怎么是0? }
黄色部分已经j++了,也就是说,输出语句中的j的值刚好比你从结果集中取值并放入的data[j]的下标多1
也就是说,你在循环体中的第一行的data[j]和你在循环体中最后一行的data[j]不是同一个东西
你刚把data[j]赋予值r.getInt("ID"),但是,你System.out.println("data[j]:"+data[j])这个输出的内容确实data[j+1]的内容, 由于还没有被你敷过值,当然是默认值0 了
System.out.println("data[j]:"+data[j]); 语句的后面,结果就正确了