qq_42490565 2019-06-09 22:13 采纳率: 66.7%
浏览 2377

萌新java连接MySQL数据库出现java.lang.NullPointerException错误是为什么,求大佬看一下代码解答

package Stu;
import java.util.*;
public class StuManage {
public void menu(){
connectSQL s=new connectSQL();
int xuhao;
String b1 = null,c1=null,b111=null;
int a = 0,a1=0,b11=0,c11=0;
Scanner scanner=new Scanner(System.in);
System.out.println("欢迎来到学生信息管理系统");
System.out.println("1.新增学生");
System.out.println("2.修改学生");
System.out.println("3.删除学生");
System.out.println("4.查询学生");
System.out.println("5.显示所有学生信息");
System.out.println("6.退出该系统");
System.out.println("请选择(1-5):");
xuhao=scanner.nextInt();
switch (xuhao) {
case 1:
s.open();
stuadd();
s.down();
break;
case 2:
update();
break;
case 3:
studel();
s.open();
s.shanchu(a);
s.down();
break;
case 4:
stuList();
s.open();
s.chaxun(b11);
s.down();
break;
case 5:
xianshi();
s.open();
s.xianshi();
s.down();
break;
case 6:
System.exit(0);
break;
default:
System.out.println("输入有误:程序自动退出,请重启程序");
break;
}
}
public void stuadd(){
connectSQL x=new connectSQL();
Scanner s=new Scanner(System.in);
String select,jieshou,name=null;
int no=0,phone=0;
System.out.println("====新增学生====");
System.out.println("学号:");
no=s.nextInt();
jieshou=s.nextLine();
System.out.println("姓名:");
name=s.nextLine();
System.out.println("手机号:");
phone=s.nextInt();
System.out.println("您输入的信息为:学号:"+no+" "+"姓名:"+name+" "+"手机号:"+phone);
System.out.println("是否保存?y/n");
jieshou=s.nextLine();
select=s.nextLine();
if(select.equals("y")){
x.tianjia(no,name,phone);
System.out.println("保存成功!");
}
else if(select.equals("n")){
System.out.println("请重新输入");
}
}
package Stu;
import java.sql.*;
public class connectSQL {
Connection con=null;
PreparedStatement st=null;
ResultSet rs=null;

public void open(){
try {
    Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}
String uri="jdbc:mysql://localhost:3306/qinyewei?user=root&password=123456&userSSL=ture";
try{
    con=DriverManager.getConnection(uri);
}
catch(SQLException e){
    System.out.println(e);
}
}
public void down(){
    try {
        con.close();
    } catch (SQLException e) {
        // TODO 自动生成的 catch 块
        e.printStackTrace();
    }

}
void xianshi(){
    try{
    st=con.prepareStatement("select * from stu");
    rs=st.executeQuery();                       
    while(rs.next()) {                          
        String a=rs.getString(1);
        String b=rs.getString(2);
        String c=rs.getString(3);
        System.out.printf("%s\t",a);
        System.out.printf("%5s\t",b);
        System.out.println(c);
    }
    }

    catch (SQLException e) {
        // TODO 自动生成的 catch 块
        e.printStackTrace();
    }
}
void tianjia(int a1,String b1,int c1) {
    try {
        System.out.println(a1);
        System.out.println(b1);
        System.out.println(c1);
        st=con.prepareStatement("insert stu values(?,?,?)");
        st.setInt(1,a1);
        st.setString(2,b1);
        st.setInt(3,c1);
        int i=st.executeUpdate(); 
        System.out.println("添加了"+i+"条记录");
        this.xianshi(); 
    } catch (Exception e) {
        // TODO 自动生成的 catch 块
        e.printStackTrace();
    }
}
运行后输入1、学号、姓名、手机号以后出现错误是为什么呢?

欢迎来到学生信息管理系统
1.新增学生
2.修改学生
3.删除学生
4.查询学生
5.显示所有学生信息
6.退出该系统
请选择(1-5):
1
====新增学生====
学号:
123123
姓名:
weqwe
手机号:
123123
您输入的信息为:学号:123123 姓名:weqwe 手机号:123123
是否保存?y/n
y
123123
weqwe
123123
java.lang.NullPointerException保存成功!

at Stu.connectSQL.tianjia(connectSQL.java:56)
at Stu.StuManage.stuadd(StuManage.java:72)
at Stu.StuManage.menu(StuManage.java:22)
at Stu.Main.main(Main.java:7)

第56行代码是
st=con.prepareStatement("insert stu values(?,?,?)");

  • 写回答

2条回答 默认 最新

  • Aubrey-J 2019-06-10 10:31
    关注
    System.out.println(a1);
    System.out.println(b1);
    System.out.println(c1);
    st=con.prepareStatement("insert stu values(?,?,?)");
    st.setInt(1,a1);
    st.setString(2,b1);
    st.setInt(3,c1);
    int i=st.executeUpdate(); 
    System.out.println("添加了"+i+"条记录");
    

    根据你的描述,看这段代码,你只把前三行输出出来了,然后就是输出的你外部调用那部分的“保存成功”,所以我觉得你的问题是

    st=con.prepareStatement("insert stu values(?,?,?)");
    st.setInt(1,a1);
    st.setString(2,b1);
    st.setInt(3,c1);
    

    这部分,你可以debug一下,看看st是否为空、null,因为你的java.lang.NullPointerException异常是空指针异常,就是当用null.时就会出现的问题,希望注意下“null点”的问题,你先试试,希望对你有帮助

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!