package com.jcgl.model;
import com.jcgl.db.*; import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GridLayout; import javax.swing.*; import com.jcgl.model.InBookModel;
import com.jcgl.model.RowModify;
import com.jcgl.model.YuDingModel;
import com.jcgl.tools.*;
import java.awt.event.*;
import java.awt.*;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Vector;public class mydown extends JDialog implements ActionListener{
JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7,jl8,jl9;
JButton jb1,jb2,jb3,jb4,jb5;
JPanel jp1,jp2,jp3,p2;
String localId;
JTable jtable;
JScrollPane jsp;
public InBookModel yum;
Vector str1,str2,str3,str4,str5,str6,str7,str8,str10;
JComboBox jcb1=new JComboBox();
JComboBox jcb2=new JComboBox();
JComboBox jcb3=new JComboBox();;
JComboBox jcb4=new JComboBox();;
JComboBox jcb5=new JComboBox();
JComboBox jcb6=new JComboBox();
JComboBox jcb7=new JComboBox();
public mydown()
{
super();
jl1=new JLabel("KeChengMing");
jl2=new JLabel("BookName");
jl3=new JLabel("ISBN");
jl4=new JLabel("ChuBanS");
jl5=new JLabel("ClassName");
jl6=new JLabel("ShuLiang");
jl7=new JLabel("DeptName");
//jl8=new JLabel("Handler");
//jtf8=new JTextField();
//jtf9=new JTextField("未通过");
jb1=new JButton("确定");
jb1.addActionListener(this);
jb2=new JButton("取消");
jb2.addActionListener(this);
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
jp1.setLayout(new GridLayout(7,1));
jp2.setLayout(new GridLayout(7,1));
jp1.add(jl1);
jp1.add(jl2);
jp1.add(jl3);
jp1.add(jl4);
jp1.add(jl5);
jp1.add(jl6);
jp1.add(jl7);
//jp1.add(jl8);
str4=new Vector();
SqlHelper sh=new SqlHelper();
String sql="select ChuBanS from YuDing_Info where 1=?";
String parars[]={"1"};
ResultSet rs=sh.query(sql, parars);
ResultSetMetaData rsmd;
try {
rsmd = rs.getMetaData();
while(rs.next())
{
for(int i=0;i<rsmd.getColumnCount();i++)
{
jcb4.addItem(rs.getString(i+1));
//str3.add(rs.getString(i+1));
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{sh.close();
}
//jp2.add(jtf1);
jp2.add(jcb1);
jp2.add(jcb2);
jp2.add(jcb3);
jp2.add(jcb4);
jp2.add(jcb5);
jp2.add(jcb6);
jp2.add(jcb7);
//jp2.add(jtf8);
jp3.add(jb1);
jp3.add(jb2);
this.add(jp1, BorderLayout.WEST);
this.add(jp2, BorderLayout.CENTER);
this.add(jp3, BorderLayout.SOUTH);
this.setSize(300, 250);
this.setVisible(true);
}
public static void main(String[] args){
mydown md=new mydown();
md.addEventHandler();
md.addEventHandler1();
//m.douwnMenu("bookname",arg); }
public void addEventHandler()
{
jcb4.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent arg0)
{
String index=jcb4.getSelectedItem().toString();
jcb5.removeAllItems();
System.out.println("======="+index);
SqlHelper dh=new SqlHelper();
String sql="select ClassName from YuDing_Info where ChuBanS=?";
String parars[]={index};
ResultSet rs=dh.query(sql, parars);
ResultSetMetaData rsmd;
str5=new Vector();
try {
rsmd = rs.getMetaData();
while(rs.next())
{
for(int i=0;i<rsmd.getColumnCount();i++)
{
jcb5.addItem(rs.getString(i+1));
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{dh.close();
}
}
});
}public void addEventHandler1()
{
jcb5.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent arg0)
{
String index=jcb5.getSelectedItem().toString();
jcb3.removeAllItems();
System.out.println("======="+index);
SqlHelper dh=new SqlHelper();
String sql="select ISBN from YuDing_Info where ClassName=?";
String parars[]={index};
ResultSet rs=dh.query(sql, parars);
System.out.println("======"+rs);
ResultSetMetaData rsmd;
str3=new Vector();
try {
rsmd = rs.getMetaData();
while(rs.next())
{
for(int i=0;i<rsmd.getColumnCount();i++)
{
jcb3.addItem(rs.getString(i+1));
//System.out.println("======"+rs.getString(i+1));
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{dh.close();
}
}
});
}
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
}
/**
* 对数据库操作的类
*/
package com.jcgl.db;
import java.util.*;
import java.sql.*;
public class SqlHelper {
//定义需要的对象
PreparedStatement ps=null;
ResultSet rs=null;
Connection ct=null;
String driverName="sun.jdbc.odbc.JdbcOdbcDriver";
String url="jdbc:odbc:mytest";
String user="sa";
String passwd="sa";
//构造函数初始化ct
public SqlHelper()
{
try {
Class.forName(driverName);
ct=DriverManager.getConnection(url,user,passwd);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}
//把对数据库的增删改 写一个函数
public boolean exeUpdate(String sql,String[] parars)
{
boolean b=true;
try {
ps=ct.prepareStatement(sql);
for(int i=0;i<parars.length;i++)
{
ps.setString(i+1, parars[i]);
}
ps.executeUpdate();
} catch (Exception e) {
b=false;
e.printStackTrace();
// TODO: handle exception
}
return b;
}
public ResultSet query(String sql,String []parars)
{
try {
ps=ct.prepareStatement(sql);
for(int i=0;i<parars.length;i++)
{
ps.setString(i+1, parars[i]);
}
rs=ps.executeQuery();
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
return rs;
}
public void close()
{
try {
if(rs!=null) rs.close();
if(ps!=null) ps.close();
if(ct!=null) ct.close();
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}}
YuDing_Info表的列为 id int,KechengMing vachar,ISBN vachar,ChuBanS vachar,ClassName vachar,ShuLiang int,DeptName vachar,Statement vachar
只写一个监听不报错,写2个监听就提示空指针,可是测试,程序还能执行到第二个rs,这个到底是怎么搞的?
我的监听没写好吗?
求帮忙看看啊~~~
{
jcb4.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent arg0)
{
String index=jcb4.getSelectedItem().toString();
jcb5.removeAllItems();
System.out.println("======="+index);
SqlHelper dh=new SqlHelper();
String sql="select ClassName from YuDing_Info where ChuBanS=?";
String parars[]={index};
ResultSet rs=dh.query(sql, parars);
ResultSetMetaData rsmd;
str5=new Vector();
try {
rsmd = rs.getMetaData();
while(rs.next())
{
for(int i=0;i<rsmd.getColumnCount();i++)
{jcb5.addItem(rs.getString(i+1));
}}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{dh.close();
}
}
});
}
==============这个定义的是JComboBox jcb5对JComboBox jcb4的监听,对应的label 是ClassName对ChuBanS的监听
public void addEventHandler1()
{
jcb5.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent arg0)
{
String index=jcb5.getSelectedItem().toString();
jcb3.removeAllItems();
System.out.println("======="+index);
SqlHelper dh=new SqlHelper();
String sql="select ISBN from YuDing_Info where ClassName=?";
String parars[]={index};
ResultSet rs=dh.query(sql, parars);
System.out.println("======"+rs);
ResultSetMetaData rsmd;
str3=new Vector();
try {
rsmd = rs.getMetaData();
while(rs.next())
{
for(int i=0;i<rsmd.getColumnCount();i++)
{jcb3.addItem(rs.getString(i+1));
//System.out.println("======"+rs.getString(i+1));
}}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{dh.close();
}
}
});
}
==============这个定义的是JComboBox jcb3对JComboBox jcb5的监听,对应的label 是ISBN对ClassName的监听我想实现的是通过先选择ChuBanS后,ClassName根据所选的ChuBanS查询数据库,在查询结果中选择ClassName,ISBN根据所选的ClassName查询数据库,在查询结果中选择ISBN我只加一个监听,能运行,加2个监听就报错,问题可能就在这2个监听之间的关系没写好, 不知道怎么写