繁体   English   中英

mysql空指针异常

[英]mysql null pointer exception

我正在运行一个自动生成电子邮件的调度程序。 我在Linux窗口中设置了crontab文件,当我尝试执行调度程序时,出现以下错误消息:

Exception excp conn: com.mysql.jdbc.Driver

我已经导入了所有必需的库,因为您可以看到我的源代码需要紧急支持

package Hosting;
Hosting.ScheduleMessanger

public class ScheduleMessanger {

    /**
     * @param args
     */
    public static void main(String[] args) 
    {
        Statement stmt = null;
        ResultSet rset = null;
        Statement stmt1 = null;
        ResultSet rset1 = null;
        Connection conn = null;
        int i = 0;int _fesc_ = 0;int _nesc_ = 0;int _lesc_ = 0;
        String Query = "";String Query1 = "";String EmailText = "";String CustEmail = "";
        String connect_string = "jdbc:mysql://127.0.0.1/dbname?user=user&password=passw";


        try
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            conn = DriverManager.getConnection(connect_string);
        }
        catch (Exception excp)
        {
          conn = null;
          System.out.println("Exception excp conn: "+excp.getMessage());
          return;
        }

        Query = "Query goes here";
        try
        {
          stmt = conn.createStatement();
          rset = stmt.executeQuery(Query);
          while (rset.next())
          {
            EmailText = "Dear All <br>";
            EmailText = EmailText + "The complain #"+rset.getString(2)+" is still un-resolved. <br>";
            EmailText = EmailText + "This mail is being generated to take the matter in your knowledge. <br><br>";

            EmailText = EmailText + "Complain By : " + rset.getString(3) + " <br>";
            EmailText = EmailText + "Complaint Type : " + rset.getString(4) + "<br>";
            EmailText = EmailText + "Priority Level : " + rset.getString(21) + "<br>";
            EmailText = EmailText + "Problem Description : " + rset.getString(24) + "<br>";

            EmailText = EmailText+"Sincerely, <br>";

            _fesc_ = _nesc_ = _lesc_ = 0;
            CustEmail = "";
            Query1 = "Second Query";
            try
            {
              stmt1 = conn.createStatement();
              rset1 = stmt1.executeQuery(Query1);
              if (rset1.next())
              {
                _fesc_ = rset1.getInt(1);
                _nesc_ = rset1.getInt(2);
                _lesc_ = rset1.getInt(3);
              }
              rset1.close();
              stmt1.close();
            }
            catch (Exception e)
            {
              _fesc_ = _nesc_ = _lesc_ = 0;
            }

            if (_fesc_ == 0)
            {
              if (rset.getString(10).length() > 1) 
              {
                CustEmail = CustEmail + rset.getString(10) + ",";
              }
              if (rset.getString(11).length() > 1)
              {
                CustEmail = CustEmail + rset.getString(11) + ",";
              }
              if (rset.getString(12).length() > 1) 
              {
                CustEmail = CustEmail + rset.getString(12) + ",";
              }
              i = SendEmail("Complain Escalation", "First Complain Escalation", EmailText, CustEmail);
              if (i == 1) 
              {
                UpdateEscalationTable(rset.getInt(1), 1, conn);
              }
            }
            else if (_nesc_ == 0)
            {
              if (rset.getString(13).length() > 1) 
              {
                CustEmail = CustEmail + rset.getString(13) + ",";
              }
              if (rset.getString(14).length() > 1) 
              {
                CustEmail = CustEmail + rset.getString(14) + ",";
              }
              if (rset.getString(15).length() > 1)
              {
                CustEmail = CustEmail + rset.getString(15) + ",";
              }
              i = SendEmail("Complain Escalation", "Second Complain Escalation", EmailText, CustEmail);
              if (i == 1) 
              {
                UpdateEscalationTable(rset.getInt(1), 2, conn);
              }
            }
            else if (_lesc_ == 0)
            {
              if (rset.getString(16).length() > 1) 
              {
                CustEmail = CustEmail + rset.getString(16) + ",";
              }
              if (rset.getString(17).length() > 1) 
              {
                CustEmail = CustEmail + rset.getString(17) + ",";
              }
              if (rset.getString(18).length() > 1) 
              {
                CustEmail = CustEmail + rset.getString(18) + ",";
              }
              i = SendEmail("Complain Escalation", "Final Complain Escalation", EmailText, CustEmail);
              if (i == 1) 
              {
                UpdateEscalationTable(rset.getInt(1), 3, conn);
              }
            }
          }
          rset.close();
          stmt.close();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }

    }

}

    enter code here

您会在类路径中错过mysql jdbc connectior。

正如詹斯建议

您会在类路径中错过mysql jdbc connectior。

如何解决呢?

在您的项目中找到.classpath文件,并在.classpath文件中添加mysql jdbc connection jar路径,

注意:如果您正在修改此文件而您不熟悉它,那么请小心,否则可能还会出现其他错误。

替代选项在Eclipse中打开项目

  1. 右键单击project --> build path --> configure build path
  2. 将出现一个弹出窗口转到library tab --> Add jar --> Give Path to Your jar
  3. 再次构建项目,然后宾果游戏就很好了

关于您的代码的一些建议

下述行中的newInstance() method不是必需的,

Class.forName("com.mysql.jdbc.Driver").newInstance();

直接使用

Class.forName("com.mysql.jdbc.Driver");

而不是像这样在单行中声明变量

String Query = "";String Query1 = "";String EmailText = "";String CustEmail = "";

在单独的行中声明它们,以提高可读性

String Query = "";
String Query1 = "";
String EmailText = "";
String CustEmail = "";

而不是使用的String使用StringBuffer原因

String s = "a" + "b" + "c";

最终将成为

String s = new StringBuffer().append("a").append("b").append("c").toString();

在您的lib文件夹com.mysql.jdbc.Driver中添加连接所需的jar文件。单击此链接以打开连接http://www.mkyong.com/jdbc/how-to-connect-to-mysql-with- jdbc-driver-java /从上面的链接下载示例,然后复制粘贴sql jar文件并使用
要么
直接从http://dev.mysql.com/downloads/connector/j/下载

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM