通过java返回的SQL查询;java.lang.NullPointerException“;

通过java返回的SQL查询;java.lang.NullPointerException“;,java,mysql,database,Java,Mysql,Database,这是我与我的计算机和数据库建立连接的代码,在此之后,我从用户那里收到用户名和密码,然后执行此查询 try{ Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection("jdbc:mysql://localhost/phpMyAdmin/Database_Name","root",""); stmt=con.createStatement(); } 问题是,无论

这是我与我的计算机和数据库建立连接的代码,在此之后,我从用户那里收到用户名和密码,然后执行此查询

try{  
    Class.forName("com.mysql.jdbc.Driver");  
     con=DriverManager.getConnection("jdbc:mysql://localhost/phpMyAdmin/Database_Name","root","");  
     stmt=con.createStatement(); 
    }
问题是,无论何时执行查询,都会得到 java.lang.NullPointerException连续3次
关于为什么会发生这种情况,您有什么想法吗?

您的查询和代码存在多个问题

  • 此处缺少空格“+userName+”和教师信息

  • 如果没有某种类型的
    JOIN
    JOIN
    与所述表一起),您无法访问另一个表列
    teacher\u info.password

  • 不要像那样连接用户输入,而是使用参数化查询来避免SQL注入攻击

  • 在这一条上也缺少单引号
    .password=“+password);


  • 了解防止SQL注入的准备好的语句阅读并改进您的问题。添加一个不是您在2017年编写查询的方式的语句,对SQL注入开放,当您不知道如何处理此类异常时,数据库工作超出了您当前的技能范围。您只是让自己负担过重。@GhostCat我同意,但我希望我能d告诉我的学术机构:DAlso在这一个上缺少两个
    .password=“+password”)1。空间到底在哪里丢失了?2. @仅当密码是字符串时才使用Luke。如果仅为数字,则为oaky@Luke,接得好。。。包括在答案中。Thanks@XtremeBaumer,仔细看,您会发现
    之前缺少空格。。。即使它是数字。。密码始终为字母数字,在SQL中为
    varchar
    。你有没有见过
    密码int
    ?@Rahul一个纯密码int就是例如电话pin码。复制自您的答案
    ”和t
    ,并且
    之间有一个空格
    
    try {
          rs=stmt.executeQuery("SELECT * FROM d
          teacher_info WHERE UserName 
           = '"+userName+"' AND teacher_info.password 
            ="+password);
        }