代码如下:
package bookup;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import javax.swing.*;
public class book extends JFrame implements ActionListener {
JLabel jlbl1,jlbl2,jlbl3,jlbl4,jlbl5,jlbl6;
JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;
JButton jbtn1,jbtn2,jbtn3,jbtn4,jbtn5,jbtn6;
Connection con=null;
Statement stmt=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
public book(String title) {
super(title);
jlbl1 =new JLabel("编号:");
jlbl2 =new JLabel("书名:");
jlbl3 =new JLabel("作者:");
jlbl4 =new JLabel("分类:");
jlbl5 =new JLabel("出版社:");
jlbl6 = new JLabel("出版时间:");
jtf1=new JTextField();
jtf1.setEditable(false);
jtf2=new JTextField();
jtf3=new JTextField();
jtf4=new JTextField();
jtf5=new JTextField();
jtf6=new JTextField();
jbtn1=new JButton("查询");
jbtn2=new JButton("下一条");
jbtn3=new JButton("增加");
jbtn4=new JButton("删除");
jbtn5=new JButton("修改");
jbtn6=new JButton("清空");
jbtn1.addActionListener(this);
jbtn2.addActionListener(this);
jbtn3.addActionListener(this);
jbtn4.addActionListener(this);
jbtn5.addActionListener(this);
jbtn6.addActionListener(this);
Container cp=this.getContentPane();
cp.setLayout(new GridLayout(9,2,20,20));
cp.add(jlbl1);
cp.add(jtf1);
cp.add(jlbl2);
cp.add(jtf2);
cp.add(jlbl3);
cp.add(jtf3);
cp.add(jlbl4);
cp.add(jtf4);
cp.add(jlbl5);
cp.add(jtf5);
cp.add(jlbl6);
cp.add(jtf6);
cp.add(jbtn1);
cp.add(jbtn2);
cp.add(jbtn3);
cp.add(jbtn4);
cp.add(jbtn5);
cp.add(jbtn6);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800,400);
setResizable(false);
this.setLocation(500,200);
setVisible(true);
}
public void createCon()
{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String constr="jdbc:sqlserver://localhost:1433;DatabaseName=book";
con =DriverManager.getConnection(constr,"sa","123456");
}catch(Exception e)
{
System.out.print("驱动或连接失败:"+e.getMessage());
}
}
public void getData()
{
try {
stmt=con.createStatement();
String sql="select * from Table_Book";
rs=stmt.executeQuery(sql);
if (rs.next())
{
jtf1.setText(rs.getString(1));
jtf2.setText(rs.getString(2));
jtf3.setText(rs.getString(3));
jtf4.setText(rs.getString(4));
jtf5.setText(rs.getString(5));
jtf6.setText(rs.getString(6));
}
}catch (SQLException e) {
System.out.println("数据读取失败");
}
}
public void releaseZy()
{
try {
rs.close();
stmt.close();
con.close();
}catch(SQLException e){
System.out.println("释放资源失败");
}
}
//下一条
public void nextData()
{
try {
if (rs.next())
{
jtf1.setText(rs.getString(1));
jtf2.setText(rs.getString(2));
jtf3.setText(rs.getString(3));
jtf4.setText(rs.getString(4));
jtf5.setText(rs.getString(5));
jtf6.setText(rs.getString(6));
}
}catch (SQLException e){
System.out.println("读取下一条数据失败");
}
}
//增加
public void InsertData()
{
try {
String sql="insert into Table_Book (书名,作者,类别,出版社,出版时间) values (?,?,?,?,?)";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, jtf2.getText());
pstmt.setString(2, jtf3.getText());
pstmt.setString(3, jtf4.getText());
pstmt.setString(4, jtf5.getText());
pstmt.setString(5, jtf6.getText());
int i=pstmt.executeUpdate();
if (i>0)
{
JOptionPane.showMessageDialog(this, "成功增加一条记录");
}
} catch (SQLException e){
JOptionPane.showMessageDialog(this , "增加数据失败");
}
}
//删除
public void DelateData()
{
try {
String sql="delete Table_Book where 编号=?";
pstmt=con.prepareStatement(sql);
pstmt.setString(1,jtf1.getText());
int i=pstmt.executeUpdate();
if (i>0)
{
JOptionPane.showMessageDialog(this, "成功删除一条记录");
}
}catch (SQLException e) {
JOptionPane.showMessageDialog(this,"删除数据失败");
}
}
@Override
public void actionPerformed (ActionEvent e) {
if (e.getSource()==jbtn1)
{
createCon();
getData();
}
else if (e.getSource()==jbtn2)
{
nextData();
}
else if (e.getSource()==jbtn3)
{
createCon();
InsertData();
}
else if (e.getSource()==jbtn4) {
createCon();
DelateData();
getData();
}
}
}
可否把控制台报错信息贴出来
releaseZy
方法里先对rs
,stmt
,con
对象进行null值判断,不为null时再调用close方法。