努力学软件 2022-05-28 14:20 采纳率: 72.7%
浏览 111
已结题

驱动或连接失败,这是哪里出问题了

驱动或连接失败:com.microsoft.sqlserve.jdbc.SQLServerDriverException in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.createStatement()" because "this.con" is null

代码如下
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,10,10));
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.sqlserve.jdbc.SQLServerDriver");
        
String constr="jdbc:sqlserver://localhost:1433;DatabaseName=BookST";
con =DriverManager.getConnection(constr,"sa","123456");

        
    }catch(Exception e) {
        System.out.print("驱动或连接失败:"+e.getMessage());
        
        
    }
}
    
    public void getData()
    {
        
        try {
            stmt=con.createStatement();
            String sql="select * form Book Table_1";
            rs=stmt.executeQuery(sql);
            if (rs.next())
                
        {
                jtf1.setText(rs.getNString(1));
                jtf2.setText(rs.getNString(2));
                jtf3.setText(rs.getNString(3));
                jtf4.setText(rs.getNString(4));
                jtf5.setText(rs.getNString(5));
                jtf6.setText(rs.getNString(6));
                    }
            
        
        }catch (SQLException e) {
            System.out.println("数据读取失败");
            
            
        }
        
    
    }
            
        public void releaseZy()
        {
            try {
                rs.close();
                stmt.close();
                con.close();
            }catch(SQLException e){
                System.out.println("释放资源失败");
            }
            
                
                
            }
        {
            
        }
            
            
        

    




    
    
    
     

        




@Override
public void actionPerformed (ActionEvent e) {
    if (e.getSource()==jbtn1)
    {
        createCon();
        getData();
        
        
    }
    
    
    
}

}

  • 写回答

1条回答 默认 最新

  • 小串串哟 2022-05-28 14:33
    关注

    java.lang.NullPointerException: Cannot invoke "java.sql.Connection.createStatement()" because "this.con" is null,
    报错提醒多么明显,这个con是null

    img

    如果不是静态的,每个方法都要重新注册驱动创建连接。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月6日
  • 已采纳回答 5月29日
  • 创建了问题 5月28日

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行