import javax.swing.*;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
public class Test3 extends JFrame implements ActionListener{
    
//定义一些控件
JPanel jp1,jp2;
JLabel jl1;
JButton jb1,jb2,jb3,jb4;
JTable jt;
JScrollPane jsp;
JTextField jtf;


public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
           Test3 test3=new Test3();
}
public Test3() throws SQLException{

jp1=new JPanel();
jtf=new JTextField(10);
jb1=new JButton("查询");
jb1.addActionListener(this);
jl1=new JLabel("请输入名字");

//把各个空间加入到jp1
jp1.add(jl1);
jp1.add(jtf);
jp1.add(jb1);

jp2=new JPanel();

jb2=new JButton("添加");
jb3=new JButton("修改");
jb4=new JButton("删除");

//把各个按钮加入到jp2
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);

//创建一个数据模型对象
StuModel sm=new StuModel();

//初始化JTable 
    jt=new JTable(sm);

//初始化jsp JScrollPane
jsp=new JScrollPane(jt);
//把jsp放入到JFrame
this.add(jsp);
this.add(jp1,"North");
this.add(jp2,"South");

this.setSize(400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);

}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==jb1){
System.out.print("用户希望查询");

//因为把对表的数据封装到StuModel中,我们就可以比较简单的完成查询
String name=this.jtf.getText().trim();
//写一个sql语句
String sql="select * from stu where stuname='"+name+"'";
StuModel sm;
try {
//构建新的数据模型类,并更新
sm = new StuModel(sql);
//更新JTable
jt.setModel(sm);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

}
}}import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;import javax.swing.table.*;
public class StuModel extends AbstractTableModel{
     Vector rowData;
Vector columnNames;


//定义操作数据库需要的东东
PreparedStatement ps=null;
Connection ct=null;
ResultSet rs=null;



public StuModel(String sql) throws SQLException{
columnNames=new Vector();
//设置列名
columnNames.add("学号");
columnNames.add("姓名");
columnNames.add("性别");
columnNames.add("年龄");
columnNames.add("系别");

rowData=new Vector();


try {
//1.加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=spdbl","sa","as7058713");
ps=ct.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
Vector hang=new Vector();
hang.add(rs.getString(1));
hang.add(rs.getString(2));
hang.add(rs.getString(3));
hang.add(rs.getInt(4));
hang.add(rs.getString(5));
hang.add(rs.getString(6));
rowData.add(hang);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(rs!=null) rs.close();
if(ps!=null) ps.close();
if(ct!=null) ct.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


//做一个构造函数,用于初始化我们的数据模型
public StuModel() throws SQLException{
columnNames=new Vector();
//设置列名
columnNames.add("学号");
columnNames.add("姓名");
columnNames.add("性别");
columnNames.add("年龄");
columnNames.add("系别");

rowData=new Vector();


try {
//1.加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=spdbl","sa","as7058713");
ps=ct.prepareStatement("select * from stu");
rs=ps.executeQuery();
while(rs.next()){
Vector hang=new Vector();
hang.add(rs.getString(1));
hang.add(rs.getString(2));
hang.add(rs.getString(3));
hang.add(rs.getInt(4));
hang.add(rs.getString(5));
hang.add(rs.getString(6));
rowData.add(hang);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(rs!=null) rs.close();
if(ps!=null) ps.close();
if(ct!=null) ct.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}

//得到共有多少列
public int getRowCount() {
// TODO Auto-generated method stub
return this.columnNames.size();
} //得到共有多少行
public int getColumnCount() {
// TODO Auto-generated method stub
return this.rowData.size();
} //得到某行某列的数据
public Object getValueAt(int row, int column) {
// TODO Auto-generated method stub
return ((Vector) this.rowData.get(row)).get(column);
} @Override
public String getColumnName(int column) {
// TODO Auto-generated method stub
return (String)this.columnNames.get(column);
}}
出现了Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 3问题

解决方案 »

  1.   

    import javax.swing.*;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    public class Test3 extends JFrame implements ActionListener{
        
    //定义一些控件
    JPanel jp1,jp2;
    JLabel jl1;
    JButton jb1,jb2,jb3,jb4;
    JTable jt;
    JScrollPane jsp;
    JTextField jtf;


    public static void main(String[] args) throws SQLException {
    // TODO Auto-generated method stub
               Test3 test3=new Test3();
    }
    public Test3() throws SQLException{

    jp1=new JPanel();
    jtf=new JTextField(10);
    jb1=new JButton("查询");
    jb1.addActionListener(this);
    jl1=new JLabel("请输入名字");

    //把各个空间加入到jp1
    jp1.add(jl1);
    jp1.add(jtf);
    jp1.add(jb1);

    jp2=new JPanel();

    jb2=new JButton("添加");
    jb3=new JButton("修改");
    jb4=new JButton("删除");

    //把各个按钮加入到jp2
    jp2.add(jb2);
    jp2.add(jb3);
    jp2.add(jb4);

    //创建一个数据模型对象
    StuModel sm=new StuModel();

    //初始化JTable 
        jt=new JTable(sm);

    //初始化jsp JScrollPane
    jsp=new JScrollPane(jt);
    //把jsp放入到JFrame
    this.add(jsp);
    this.add(jp1,"North");
    this.add(jp2,"South");

    this.setSize(400, 300);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);

    }
    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if(e.getSource()==jb1){
    System.out.print("用户希望查询");

    //因为把对表的数据封装到StuModel中,我们就可以比较简单的完成查询
    String name=this.jtf.getText().trim();
    //写一个sql语句
    String sql="select * from stu where stuname='"+name+"'";
    StuModel sm;
    try {
    //构建新的数据模型类,并更新
    sm = new StuModel(sql);
    //更新JTable
    jt.setModel(sm);
    } catch (SQLException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }

    }
    }}import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Vector;
    import javax.swing.table.*;
    public class StuModel extends AbstractTableModel{
         Vector rowData;
    Vector columnNames;


    //定义操作数据库需要的东东
    PreparedStatement ps=null;
    Connection ct=null;
    ResultSet rs=null;



    public StuModel(String sql) throws SQLException{
    columnNames=new Vector();
    //设置列名
    columnNames.add("学号");
    columnNames.add("姓名");
    columnNames.add("性别");
    columnNames.add("年龄");
    columnNames.add("系别");

    rowData=new Vector();


    try {
    //1.加载驱动
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=spdbl","sa","as7058713");
    ps=ct.prepareStatement(sql);
    rs=ps.executeQuery();
    while(rs.next()){
    Vector hang=new Vector();
    hang.add(rs.getString(1));
    hang.add(rs.getString(2));
    hang.add(rs.getString(3));
    hang.add(rs.getInt(4));
    hang.add(rs.getString(5));
    hang.add(rs.getString(6));
    rowData.add(hang);
    }
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    try {
    if(rs!=null) rs.close();
    if(ps!=null) ps.close();
    if(ct!=null) ct.close();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }


    //做一个构造函数,用于初始化我们的数据模型
    public StuModel() throws SQLException{
    columnNames=new Vector();
    //设置列名
    columnNames.add("学号");
    columnNames.add("姓名");
    columnNames.add("性别");
    columnNames.add("年龄");
    columnNames.add("系别");

    rowData=new Vector();


    try {
    //1.加载驱动
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=spdbl","sa","as7058713");
    ps=ct.prepareStatement("select * from stu");
    rs=ps.executeQuery();
    while(rs.next()){
    Vector hang=new Vector();
    hang.add(rs.getString(1));
    hang.add(rs.getString(2));
    hang.add(rs.getString(3));
    hang.add(rs.getInt(4));
    hang.add(rs.getString(5));
    hang.add(rs.getString(6));
    rowData.add(hang);
    }
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    try {
    if(rs!=null) rs.close();
    if(ps!=null) ps.close();
    if(ct!=null) ct.close();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }


    }

    //得到共有多少列
    public int getRowCount() {
    // TODO Auto-generated method stub
    return this.columnNames.size();
    } //得到共有多少行
    public int getColumnCount() {
    // TODO Auto-generated method stub
    return this.rowData.size();
    } //得到某行某列的数据
    public Object getValueAt(int row, int column) {
    // TODO Auto-generated method stub
    return ((Vector) this.rowData.get(row)).get(column);
    } @Override
    public String getColumnName(int column) {
    // TODO Auto-generated method stub
    return (String)this.columnNames.get(column);
    }}出现了Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 3问题
    这样可以吗
      

  2.   

    import javax.swing.*;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    public class Test3 extends JFrame implements ActionListener{
        
    //定义一些控件
    JPanel jp1,jp2;
    JLabel jl1;
    JButton jb1,jb2,jb3,jb4;
    JTable jt;
    JScrollPane jsp;
    JTextField jtf;


    public static void main(String[] args) throws SQLException {
    // TODO Auto-generated method stub
               Test3 test3=new Test3();
    }
    public Test3() throws SQLException{

    jp1=new JPanel();
    jtf=new JTextField(10);
    jb1=new JButton("查询");
    jb1.addActionListener(this);
    jl1=new JLabel("请输入名字");

    //把各个空间加入到jp1
    jp1.add(jl1);
    jp1.add(jtf);
    jp1.add(jb1);

    jp2=new JPanel();

    jb2=new JButton("添加");
    jb3=new JButton("修改");
    jb4=new JButton("删除");

    //把各个按钮加入到jp2
    jp2.add(jb2);
    jp2.add(jb3);
    jp2.add(jb4);

    //创建一个数据模型对象
    StuModel sm=new StuModel();

    //初始化JTable 
        jt=new JTable(sm);

    //初始化jsp JScrollPane
    jsp=new JScrollPane(jt);
    //把jsp放入到JFrame
    this.add(jsp);
    this.add(jp1,"North");
    this.add(jp2,"South");

    this.setSize(400, 300);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);

    }
    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if(e.getSource()==jb1){
    System.out.print("用户希望查询");

    //因为把对表的数据封装到StuModel中,我们就可以比较简单的完成查询
    String name=this.jtf.getText().trim();
    //写一个sql语句
    String sql="select * from stu where stuname='"+name+"'";
    StuModel sm;
    try {
    //构建新的数据模型类,并更新
    sm = new StuModel(sql);
    //更新JTable
    jt.setModel(sm);
    } catch (SQLException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    }
    }
    }import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Vector;
    import javax.swing.table.*;
    public class StuModel extends AbstractTableModel{
         Vector rowData;
    Vector columnNames;


    //定义操作数据库需要的东东
    PreparedStatement ps=null;
    Connection ct=null;
    ResultSet rs=null;



    public StuModel(String sql) throws SQLException{
    columnNames=new Vector();
    //设置列名
    columnNames.add("学号");
    columnNames.add("姓名");
    columnNames.add("性别");
    columnNames.add("年龄");
    columnNames.add("系别");

    rowData=new Vector();


    try {
    //1.加载驱动
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=spdbl","sa","as7058713");
    ps=ct.prepareStatement(sql);
    rs=ps.executeQuery();
    while(rs.next()){
    Vector hang=new Vector();
    hang.add(rs.getString(1));
    hang.add(rs.getString(2));
    hang.add(rs.getString(3));
    hang.add(rs.getInt(4));
    hang.add(rs.getString(5));
    hang.add(rs.getString(6));
    rowData.add(hang);
    }
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    try {
    if(rs!=null) rs.close();
    if(ps!=null) ps.close();
    if(ct!=null) ct.close();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }


    //做一个构造函数,用于初始化我们的数据模型
    public StuModel() throws SQLException{
    columnNames=new Vector();
    //设置列名
    columnNames.add("学号");
    columnNames.add("姓名");
    columnNames.add("性别");
    columnNames.add("年龄");
    columnNames.add("系别");

    rowData=new Vector();


    try {
    //1.加载驱动
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=spdbl","sa","as7058713");
    ps=ct.prepareStatement("select * from stu");
    rs=ps.executeQuery();
    while(rs.next()){
    Vector hang=new Vector();
    hang.add(rs.getString(1));
    hang.add(rs.getString(2));
    hang.add(rs.getString(3));
    hang.add(rs.getInt(4));
    hang.add(rs.getString(5));
    hang.add(rs.getString(6));
    rowData.add(hang);
    }
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    try {
    if(rs!=null) rs.close();
    if(ps!=null) ps.close();
    if(ct!=null) ct.close();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }


    }

    //得到共有多少列
    public int getRowCount() {
    // TODO Auto-generated method stub
    return this.columnNames.size();
    } //得到共有多少行
    public int getColumnCount() {
    // TODO Auto-generated method stub
    return this.rowData.size();
    } //得到某行某列的数据
    public Object getValueAt(int row, int column) {
    // TODO Auto-generated method stub
    return ((Vector) this.rowData.get(row)).get(column);
    } @Override
    public String getColumnName(int column) {
    // TODO Auto-generated method stub
    return (String)this.columnNames.get(column);
    }}出现了Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 3