2017-05-26 106 views
-6
try{ 
    Class.forName("com.mysql.jdbc.Driver"); 
    con=DriverManager.getConnection("jdbc:mysql://localhost/phpMyAdmin/Database_Name","root",""); 
    stmt=con.createStatement(); 
    } 

这是我的代码,以建立连接的B/W我的电脑和数据库,并在此之后我接收来自用户的用户名和密码,然后我执行此查询SQL查询返回“显示java.lang.NullPointerException”

try { 
     rs=stmt.executeQuery("SELECT * FROM d 
     teacher_info WHERE UserName 
     = '"+userName+"' AND teacher_info.password 
     ="+password); 
    } 

的问题是,每当我执行查询,我得到 显示java.lang.NullPointerException 3次连续 任何想法,这可能是为什么发生?

+1

单引号'了解准备好的发言,以防止SQL注入 – Jens

+0

阅读[问]和改善你的问题。添加[MCVE]那是不是你如何编写查询在2017年,开放式SQL注入 – Jens

+1

,http://bobby-tables.com/ https://en.wikipedia.org/wiki/SQL_injection – luk2302

回答

4

没有与您的查询和代码在这里

  1. 缺少空间= '"+userName+"' AND teacher_info

  2. 多的问题,你不能与访问另一个表列teacher_info.password一样,如果没有某种JOINjoin说表)

  3. 不将用户输入一样,而使用参数化查询,以避免SQL注入攻击

  4. 也缺少这一个.password ="+password);

+2

还缺少两个'''在这一个'。密码=“+密码);' – Luke

+0

1.哪儿是缺少空间2? 。@Luke只有在密码是一个字符串。如果只是数字,那么它的橡木 – XtremeBaumer

+0

@Luke,漂亮的抓...列入答案。谢谢 – Rahul