求助大佬,救救孩子吧!!!

m0_73989098 m0_73989098 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

  本人Java菜鸟,跟着网上做了一个酒店管理系统,用Java Swing做的,添加功能都能正常运行,可是在删除和修改时,出现空指针问题,还有一个查询时,出现sql语句错误,实在想不到招了,求区里大佬求助

一下是问题:

 

 

 以下是代码:

删除:

package view;

import java.awt.EventQueue;

import javax.swing.JInternalFrame;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;

import dao.HotelTypeDao;
import model.HotelType;
import util.DbUtill;
import util.StringUtill;

import javax.swing.JLabel;
import javax.swing.JOptionPane;

import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.LayoutStyle.ComponentPlacement;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.awt.event.ActionEvent;

public class HotelDel extends JInternalFrame {
	private JTextField delNotxt;
	
	private DbUtill dbUtill = new DbUtill();
	private HotelTypeDao hotelTypeDao;


	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					HotelDel frame = new HotelDel();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public HotelDel() {
		setTitle("删除");
		setIconifiable(true);
		setClosable(true);
		setBounds(100, 100, 613, 421);
		
		JLabel lblNewLabel = new JLabel("删除的房间号");
		lblNewLabel.setFont(new Font("Dialog", Font.BOLD, 25));
		
		delNotxt = new JTextField();
		delNotxt.setColumns(10);
		
		JButton btnNewButton = new JButton("确认删除");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				hotelDelActionPerformed(e);
			}
		});
		btnNewButton.setFont(new Font("宋体", Font.BOLD, 22));
		GroupLayout groupLayout = new GroupLayout(getContentPane());
		groupLayout.setHorizontalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
						.addGroup(groupLayout.createSequentialGroup()
							.addGap(82)
							.addComponent(lblNewLabel, GroupLayout.PREFERRED_SIZE, 174, GroupLayout.PREFERRED_SIZE)
							.addGap(44)
							.addComponent(delNotxt, GroupLayout.PREFERRED_SIZE, 197, GroupLayout.PREFERRED_SIZE))
						.addGroup(groupLayout.createSequentialGroup()
							.addGap(215)
							.addComponent(btnNewButton, GroupLayout.PREFERRED_SIZE, 146, GroupLayout.PREFERRED_SIZE)))
					.addContainerGap(106, Short.MAX_VALUE))
		);
		groupLayout.setVerticalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addGap(131)
					.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
						.addComponent(delNotxt, GroupLayout.PREFERRED_SIZE, 33, GroupLayout.PREFERRED_SIZE)
						.addComponent(lblNewLabel))
					.addPreferredGap(ComponentPlacement.RELATED, 114, Short.MAX_VALUE)
					.addComponent(btnNewButton, GroupLayout.PREFERRED_SIZE, 49, GroupLayout.PREFERRED_SIZE)
					.addGap(63))
		);
		getContentPane().setLayout(groupLayout);
			
	}
	
	public void resetValue() {
		this.delNotxt.setText("");
	}
	
	private void hotelDelActionPerformed(ActionEvent evt) {
		String delno = delNotxt.getText();
		
		if (StringUtill.isEmpty(delno)) {
			JOptionPane.showMessageDialog(null, "删除号不能为空");
			return;
		}
		
		HotelType hotelType = new HotelType(delno);
		Connection con = null;
		
		try {
			con = dbUtill.getCon();
			int delNum = hotelTypeDao.del(con, hotelType);
			if (delNum==1) {
				JOptionPane.showMessageDialog(null, "删除成功");
				this.resetValue();
			}else {
				JOptionPane.showMessageDialog(null, "删除失败");
			}
		} catch (Exception e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "删除失败");
		}finally {
			try {
				dbUtill.closeCon(con);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
	}
}

修改:

package view;

import java.awt.EventQueue;

import javax.swing.JInternalFrame;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;

import dao.HotelTypeDao;
import model.HotelType;
import util.DbUtill;
import util.StringUtill;

import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.awt.event.ActionEvent;

public class HotelAlt extends JInternalFrame {
	private JTextField yudingNoText;
	private JTextField yudingStaText;
	
	private DbUtill dbUtill = new DbUtill();
	private HotelTypeDao hotelTypeDao;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					HotelAlt frame = new HotelAlt();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public HotelAlt() {
		setTitle("预定");
		setClosable(true);
		setIconifiable(true);
		setBounds(100, 100, 677, 489);
		
		JLabel lblNewLabel = new JLabel("预定房间号");
		lblNewLabel.setFont(new Font("Dialog", Font.BOLD, 19));
		
		JLabel lblNewLabel_1 = new JLabel("修改房间状态");
		lblNewLabel_1.setFont(new Font("宋体", Font.BOLD, 21));
		
		yudingNoText = new JTextField();
		yudingNoText.setColumns(10);
		
		yudingStaText = new JTextField();
		yudingStaText.setColumns(10);
		
		JButton btnNewButton = new JButton("确认");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				hotelAltActionPerformed(e);
			}


		});
		btnNewButton.setFont(new Font("宋体", Font.BOLD, 23));
		GroupLayout groupLayout = new GroupLayout(getContentPane());
		groupLayout.setHorizontalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addGap(120)
					.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
						.addComponent(lblNewLabel, GroupLayout.PREFERRED_SIZE, 137, GroupLayout.PREFERRED_SIZE)
						.addComponent(lblNewLabel_1, GroupLayout.PREFERRED_SIZE, 145, GroupLayout.PREFERRED_SIZE))
					.addGap(69)
					.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
						.addComponent(yudingStaText, GroupLayout.DEFAULT_SIZE, 131, Short.MAX_VALUE)
						.addComponent(yudingNoText, GroupLayout.DEFAULT_SIZE, 131, Short.MAX_VALUE))
					.addGap(202))
				.addGroup(groupLayout.createSequentialGroup()
					.addGap(235)
					.addComponent(btnNewButton, GroupLayout.PREFERRED_SIZE, 124, GroupLayout.PREFERRED_SIZE)
					.addContainerGap(308, Short.MAX_VALUE))
		);
		groupLayout.setVerticalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addGap(127)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblNewLabel, GroupLayout.PREFERRED_SIZE, 43, GroupLayout.PREFERRED_SIZE)
						.addComponent(yudingNoText, GroupLayout.PREFERRED_SIZE, 29, GroupLayout.PREFERRED_SIZE))
					.addGap(57)
					.addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
						.addComponent(yudingStaText, GroupLayout.PREFERRED_SIZE, 32, GroupLayout.PREFERRED_SIZE)
						.addComponent(lblNewLabel_1, GroupLayout.PREFERRED_SIZE, 45, GroupLayout.PREFERRED_SIZE))
					.addGap(90)
					.addComponent(btnNewButton, GroupLayout.PREFERRED_SIZE, 56, GroupLayout.PREFERRED_SIZE)
					.addContainerGap(42, Short.MAX_VALUE))
		);
		getContentPane().setLayout(groupLayout);

	}
	
	//重置表单
		private void reserValue() {
			this.yudingNoText.setText("");
			this.yudingStaText.setText("");
		}
		
		
	private void hotelAltActionPerformed(ActionEvent evt) {
		String yudingNoText = this.yudingNoText.getText();
		String yudingStaText = this.yudingStaText.getText();
		if (StringUtill.isEmpty(yudingNoText)) {
			JOptionPane.showMessageDialog(null, "预定的房间号不能为空");
			return;
		}else if (StringUtill.isEmpty(yudingStaText)) {
			JOptionPane.showMessageDialog(null, "预定的状态不能为空");
			return;
		}
		
		HotelType hotelType = new HotelType(yudingNoText,yudingStaText);
		Connection con = null;
		
		try {
			con = dbUtill.getCon();
			int n = hotelTypeDao.update(con, hotelType);
			if (n==1) {
			JOptionPane.showMessageDialog(null, "酒店预定成功");
			this.reserValue();
			}else {
				JOptionPane.showMessageDialog(null, "酒店预定失败");
			}
		} catch (Exception e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "酒店预定失败");
		}finally {
			try {
				dbUtill.closeCon(con);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
	}
}

查找:

package view;

import java.awt.EventQueue;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Vector;

import javax.swing.JInternalFrame;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

import dao.HotelTypeDao;
import model.HotelType;
import util.DbUtill;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class HotelSel extends JInternalFrame {
	private JTable hoteltypetable;
	
	private DbUtill dbUtill = new DbUtill();
	private HotelTypeDao hotelTypeDao = new HotelTypeDao();
	private JTextField statxt;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					HotelSel frame = new HotelSel();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public HotelSel() {
		setIconifiable(true);
		setClosable(true);
		setBounds(100, 100, 834, 588);
		
		JScrollPane scrollPane = new JScrollPane();
		
		JLabel lblNewLabel = new JLabel("房间状态");
		lblNewLabel.setFont(new Font("宋体", Font.BOLD, 21));
		
		statxt = new JTextField();
		statxt.setColumns(10);
		
		JButton btnNewButton = new JButton("查询");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				HotelTypeSerchActionPerformed(e);
			}

			
		});
		btnNewButton.setFont(new Font("宋体", Font.BOLD, 21));
		GroupLayout groupLayout = new GroupLayout(getContentPane());
		groupLayout.setHorizontalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addGap(85)
					.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
						.addGroup(groupLayout.createSequentialGroup()
							.addGap(50)
							.addComponent(lblNewLabel, GroupLayout.PREFERRED_SIZE, 102, GroupLayout.PREFERRED_SIZE)
							.addGap(47)
							.addComponent(statxt, GroupLayout.PREFERRED_SIZE, 208, GroupLayout.PREFERRED_SIZE)
							.addGap(80)
							.addComponent(btnNewButton, GroupLayout.PREFERRED_SIZE, 107, GroupLayout.PREFERRED_SIZE))
						.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 656, GroupLayout.PREFERRED_SIZE))
					.addContainerGap(83, Short.MAX_VALUE))
		);
		groupLayout.setVerticalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addGap(54)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(statxt, GroupLayout.PREFERRED_SIZE, 32, GroupLayout.PREFERRED_SIZE)
						.addComponent(lblNewLabel, GroupLayout.PREFERRED_SIZE, 39, GroupLayout.PREFERRED_SIZE)
						.addComponent(btnNewButton, GroupLayout.PREFERRED_SIZE, 43, GroupLayout.PREFERRED_SIZE))
					.addGap(46)
					.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 374, GroupLayout.PREFERRED_SIZE)
					.addContainerGap(46, Short.MAX_VALUE))
		);
		
		hoteltypetable = new JTable();
		hoteltypetable.setModel(new DefaultTableModel(
			new Object[][] {
			},
			new String[] {
				"\u623F\u95F4\u53F7", "\u623F\u95F4\u7C7B\u578B", "\u623F\u95F4\u72B6\u6001", "\u623F\u95F4\u4EF7\u683C"
			}
		));
		scrollPane.setViewportView(hoteltypetable);
		getContentPane().setLayout(groupLayout);
		
		this.filltable(new HotelType());

	}
	
	
	//查找所有房间
	private void filltable(HotelType hotelType) {
		DefaultTableModel dtm = (DefaultTableModel)hoteltypetable.getModel();
		dtm.setRowCount(0);
		Connection con = null;
		try {
			con = dbUtill.getCon();
			ResultSet rs = hotelTypeDao.list(con, hotelType);
			while (rs.next()) {
				Vector v = new Vector();
				v.add(rs.getString("h_no"));
				v.add(rs.getString("h_name"));
				v.add(rs.getString("h_sta"));
				v.add(rs.getString("h_price"));
				dtm.addRow(v);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				dbUtill.closeCon(con);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	//房间状态查询
	private void HotelTypeSerchActionPerformed(ActionEvent evt) {
		String sta = this.statxt.getText();
		HotelType hotelType = new HotelType();
		hotelType.setH_sta(sta);
		this.filltable(hotelType);
	}
}

sql语句:

package dao;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import model.HotelType;
import util.StringUtill;

public class HotelTypeDao {
	
	//酒店添加
	public int add(Connection con,HotelType hotelType) throws Exception{
		String sql = "insert into hoteltype values(?,?,?,?);";
		PreparedStatement pstmt = con.prepareStatement(sql);
		pstmt.setString(1,hotelType.getH_no());
		pstmt.setString(2,hotelType.getH_name());
		pstmt.setString(3,hotelType.getH_sta());
		pstmt.setString(4, hotelType.getH_price());
		return pstmt.executeUpdate();
	}
	
	
	//删除
	public int del(Connection con,HotelType hotelType)  throws Exception{
		String sql = "delete from hoteltype where h_no=?";
		PreparedStatement pstmt = con.prepareStatement(sql);
		pstmt.setString(1, hotelType.getH_no());
		return pstmt.executeUpdate();
	}
	
	//修改
	public int update(Connection con,HotelType hotelType) throws Exception {
		String sql = "update hoteltype set h_sta=? where h_no=?";
		PreparedStatement pstmt = con.prepareStatement(sql);
		pstmt.setString(1, hotelType.getH_sta());
		pstmt.setString(2, hotelType.getH_no());
		return pstmt.executeUpdate();
	}
	
	public ResultSet list(Connection con,HotelType hotelType) throws Exception {
		StringBuffer sb = new StringBuffer("select * from hoteltype");
		if (StringUtill.isNotEmpty(hotelType.getH_sta())) {
			sb.append(" and h_sta like %"+ hotelType.getH_sta() + "%");
		}
		PreparedStatement pstm = con.prepareStatement(sb.toString().replaceFirst("and", "where"));
		return pstm.executeQuery();
	}
	

}

类

package model;

public class HotelType {
	
	private String h_no;
	private String h_name;
	private String h_sta;
	private String h_price;
	
	
	
	public HotelType() {
		super();
	}
	
	
	public HotelType(String h_no, String h_name, String h_sta, String h_price) {
		super();
		this.h_no = h_no;
		this.h_name = h_name;
		this.h_sta = h_sta;
		this.h_price = h_price;
	}
	
	
	public  HotelType(String yuding_no,String yuding_sta) {
		super();
		this.h_no = yuding_no;
		this.h_sta = yuding_sta;
	}
	
	public  HotelType(String delno) {
		super();
		this.h_no = delno;
	}


	public String getH_no() {
		return h_no;
	}
	public void setH_no(String h_no) {
		this.h_no = h_no;
	}
	public String getH_name() {
		return h_name;
	}
	public void setH_name(String h_name) {
		this.h_name = h_name;
	}
	public String getH_sta() {
		return h_sta;
	}
	public void setH_sta(String h_sta) {
		this.h_sta = h_sta;
	}
	public String getH_price() {
		return h_price;
	}
	public void setH_price(String h_price) {
		this.h_price = h_price;
	}
}

 

...全文

相关推荐

评论 8
收藏 已收藏
分享
返回顶部