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

[复制链接]
查看11 | 回复4 | 2021-1-27 06:32:08 | 显示全部楼层 |阅读模式
importjavax.swing.*;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassTest3extendsJFrameimplementsActionListener{
//定义一些控件
JPaneljp1,jp2;
JLabeljl1;
JButtonjb1,jb2,jb3,jb4;
JTablejt;
JScrollPanejsp;
JTextFieldjtf;

publicstaticvoidmain(String[]args)throwsSQLException{
//TODOAuto-generatedmethodstub
Test3test3=newTest3();
}
publicTest3()throwsSQLException{
jp1=newJPanel();
jtf=newJTextField(10);
jb1=newJButton("查询");
jb1.addActionListener(this);
jl1=newJLabel("请输入名字");
//把各个空间加入到jp1
jp1.add(jl1);
jp1.add(jtf);
jp1.add(jb1);
jp2=newJPanel();
jb2=newJButton("添加");
jb3=newJButton("修改");
jb4=newJButton("删除");
//把各个按钮加入到jp2
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
//创建一个数据模型对象
StuModelsm=newStuModel();
//初始化JTable
jt=newJTable(sm);
//初始化jspJScrollPane
jsp=newJScrollPane(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
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
if(e.getSource()==jb1){
System.out.print("用户希望查询");
//因为把对表的数据封装到StuModel中,我们就可以比较简单的完成查询
Stringname=this.jtf.getText().trim();
//写一个sql语句
Stringsql="select*fromstuwherestuname='"+name+"'";
StuModelsm;
try{
//构建新的数据模型类,并更新
sm=newStuModel(sql);
//更新JTable
jt.setModel(sm);
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
}
}
}
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.Vector;

importjavax.swing.table.*;
publicclassStuModelextendsAbstractTableModel{

VectorrowData;
VectorcolumnNames;

//定义操作数据库需要的东东
PreparedStatementps=null;
Connectionct=null;
ResultSetrs=null;

publicStuModel(Stringsql)throwsSQLException{
columnNames=newVector();
//设置列名
columnNames.add("学号");
columnNames.add("姓名");
columnNames.add("性别");
columnNames.add("年龄");
columnNames.add("系别");
rowData=newVector();

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()){
Vectorhang=newVector();
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(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
if(rs!=null)rs.close();
if(ps!=null)ps.close();
if(ct!=null)ct.close();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}

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

try{
//1.加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=spdbl","sa","as7058713");
ps=ct.prepareStatement("select*fromstu");
rs=ps.executeQuery();
while(rs.next()){
Vectorhang=newVector();
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(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
if(rs!=null)rs.close();
if(ps!=null)ps.close();
if(ct!=null)ct.close();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

}
//得到共有多少列
publicintgetRowCount(){
//TODOAuto-generatedmethodstub
returnthis.columnNames.size();
}
//得到共有多少行
publicintgetColumnCount(){
//TODOAuto-generatedmethodstub
returnthis.rowData.size();
}
//得到某行某列的数据
publicObjectgetValueAt(introw,intcolumn){
//TODOAuto-generatedmethodstub
return((Vector)this.rowData.get(row)).get(column);
}
@Override
publicStringgetColumnName(intcolumn){
//TODOAuto-generatedmethodstub
return(String)this.columnNames.get(column);
}
}
出现了Exceptioninthread"AWT-EventQueue-0"java.lang.ArrayIndexOutOfBoundsException:Arrayindexoutofrange:3问题

分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:32:08 | 显示全部楼层
代码乱了,看不清。重贴。


回复

使用道具 举报

千问 | 2021-1-27 06:32:08 | 显示全部楼层
importjavax.swing.*;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassTest3extendsJFrameimplementsActionListener{
//定义一些控件
JPaneljp1,jp2;
JLabeljl1;
JButtonjb1,jb2,jb3,jb4;
JTablejt;
JScrollPanejsp;
JTextFieldjtf;

publicstaticvoidmain(String[]args)throwsSQLException{
//TODOAuto-generatedmethodstub
Test3test3=newTest3();
}
publicTest3()throwsSQLException{
jp1=newJPanel();
jtf=newJTextField(10);
jb1=newJButton("查询");
jb1.addActionListener(this);
jl1=newJLabel("请输入名字");
//把各个空间加入到jp1
jp1.add(jl1);
jp1.add(jtf);
jp1.add(jb1);
jp2=newJPanel();
jb2=newJButton("添加");
jb3=newJButton("修改");
jb4=newJButton("删除");
//把各个按钮加入到jp2
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
//创建一个数据模型对象
StuModelsm=newStuModel();
//初始化JTable
jt=newJTable(sm);
//初始化jspJScrollPane
jsp=newJScrollPane(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
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
if(e.getSource()==jb1){
System.out.print("用户希望查询");
//因为把对表的数据封装到StuModel中,我们就可以比较简单的完成查询
Stringname=this.jtf.getText().trim();
//写一个sql语句
Stringsql="select*fromstuwherestuname='"+name+"'";
StuModelsm;
try{
//构建新的数据模型类,并更新
sm=newStuModel(sql);
//更新JTable
jt.setModel(sm);
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
}
}
}
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.Vector;
importjavax.swing.table.*;
publicclassStuModelextendsAbstractTableModel{

VectorrowData;
VectorcolumnNames;

//定义操作数据库需要的东东
PreparedStatementps=null;
Connectionct=null;
ResultSetrs=null;

publicStuModel(Stringsql)throwsSQLException{
columnNames=newVector();
//设置列名
columnNames.add("学号");
columnNames.add("姓名");
columnNames.add("性别");
columnNames.add("年龄");
columnNames.add("系别");
rowData=newVector();

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()){
Vectorhang=newVector();
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(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
if(rs!=null)rs.close();
if(ps!=null)ps.close();
if(ct!=null)ct.close();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}

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

try{
//1.加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=spdbl","sa","as7058713");
ps=ct.prepareStatement("select*fromstu");
rs=ps.executeQuery();
while(rs.next()){
Vectorhang=newVector();
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(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
if(rs!=null)rs.close();
if(ps!=null)ps.close();
if(ct!=null)ct.close();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

}
//得到共有多少列
publicintgetRowCount(){
//TODOAuto-generatedmethodstub
returnthis.columnNames.size();
}
//得到共有多少行
publicintgetColumnCount(){
//TODOAuto-generatedmethodstub
returnthis.rowData.size();
}
//得到某行某列的数据
publicObjectgetValueAt(introw,intcolumn){
//TODOAuto-generatedmethodstub
return((Vector)this.rowData.get(row)).get(column);
}
@Override
publicStringgetColumnName(intcolumn){
//TODOAuto-generatedmethodstub
return(String)this.columnNames.get(column);
}
}出现了Exceptioninthread"AWT-EventQueue-0"java.lang.ArrayIndexOutOfBoundsException:Arrayindexoutofrange:3问题
这样可以吗

回复

使用道具 举报

千问 | 2021-1-27 06:32:08 | 显示全部楼层
数组下标越界,举个例子你看看你报错那行,是不是本来数组里有3个,但是你下标取[3]或者[4]了?数组从0开始,应该最多到[2]。
回复

使用道具 举报

千问 | 2021-1-27 06:32:08 | 显示全部楼层
importjavax.swing.*;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassTest3extendsJFrameimplementsActionListener{
//定义一些控件
JPaneljp1,jp2;
JLabeljl1;
JButtonjb1,jb2,jb3,jb4;
JTablejt;
JScrollPanejsp;
JTextFieldjtf;

publicstaticvoidmain(String[]args)throwsSQLException{
//TODOAuto-generatedmethodstub
Test3test3=newTest3();
}
publicTest3()throwsSQLException{
jp1=newJPanel();
jtf=newJTextField(10);
jb1=newJButton("查询");
jb1.addActionListener(this);
jl1=newJLabel("请输入名字");
//把各个空间加入到jp1
jp1.add(jl1);
jp1.add(jtf);
jp1.add(jb1);
jp2=newJPanel();
jb2=newJButton("添加");
jb3=newJButton("修改");
jb4=newJButton("删除");
//把各个按钮加入到jp2
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
//创建一个数据模型对象
StuModelsm=newStuModel();
//初始化JTable
jt=newJTable(sm);
//初始化jspJScrollPane
jsp=newJScrollPane(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
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
if(e.getSource()==jb1){
System.out.print("用户希望查询");
//因为把对表的数据封装到StuModel中,我们就可以比较简单的完成查询
Stringname=this.jtf.getText().trim();
//写一个sql语句
Stringsql="select*fromstuwherestuname='"+name+"'";
StuModelsm;
try{
//构建新的数据模型类,并更新
sm=newStuModel(sql);
//更新JTable
jt.setModel(sm);
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
}
}
}
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.Vector;
importjavax.swing.table.*;
publicclassStuModelextendsAbstractTableModel{

VectorrowData;
VectorcolumnNames;

//定义操作数据库需要的东东
PreparedStatementps=null;
Connectionct=null;
ResultSetrs=null;

publicStuModel(Stringsql)throwsSQLException{
columnNames=newVector();
//设置列名
columnNames.add("学号");
columnNames.add("姓名");
columnNames.add("性别");
columnNames.add("年龄");
columnNames.add("系别");
rowData=newVector();

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()){
Vectorhang=newVector();
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(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
if(rs!=null)rs.close();
if(ps!=null)ps.close();
if(ct!=null)ct.close();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}

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

try{
//1.加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=spdbl","sa","as7058713");
ps=ct.prepareStatement("select*fromstu");
rs=ps.executeQuery();
while(rs.next()){
Vectorhang=newVector();
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(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
if(rs!=null)rs.close();
if(ps!=null)ps.close();
if(ct!=null)ct.close();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

}
//得到共有多少列
publicintgetRowCount(){
//TODOAuto-generatedmethodstub
returnthis.columnNames.size();
}
//得到共有多少行
publicintgetColumnCount(){
//TODOAuto-generatedmethodstub
returnthis.rowData.size();
}
//得到某行某列的数据
publicObjectgetValueAt(introw,intcolumn){
//TODOAuto-generatedmethodstub
return((Vector)this.rowData.get(row)).get(column);
}
@Override
publicStringgetColumnName(intcolumn){
//TODOAuto-generatedmethodstub
return(String)this.columnNames.get(column);
}
}出现了Exceptioninthread"AWT-EventQueue-0"java.lang.ArrayIndexOutOfBoundsException:Arrayindexoutofrange:3
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行