290,966
社区成员




本人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;
}
}
啥 啥 啥 写的啥跟啥
@CSDN-Ada助手 请解决用户的这个问题。
@CSDN-Ada助手 请写一个Java的例子,