Java小问题求帮助(小白一个)

qq_39261937 2017-11-17 11:36:05
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问题
...全文
178 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39261937 2017-11-17
  • 打赏
  • 举报
回复
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
db8726 2017-11-17
  • 打赏
  • 举报
回复
数组下标越界,举个例子你看看你报错那行,是不是本来数组里有3个,但是你下标取[3]或者[4]了?数组从0开始,应该最多到[2]。
qq_39261937 2017-11-17
  • 打赏
  • 举报
回复
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问题 这样可以吗
捏造的信仰 2017-11-17
  • 打赏
  • 举报
回复
代码乱了,看不清。重贴。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧