"java.lang.NumberFormatException: Cannot parse null string " 为什么我会遇到这个错误?
"java.lang.NumberFormatException: Cannot parse null string " why am I having this error?
package HRCproject;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.gson.Gson;
import HRCproject.pojo.*;
import HRCproject.JDBC_Connection ;
@WebServlet("/fetch")
public class fetch_sevelet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException
{
res.setContentType("application/json");
res.setCharacterEncoding("UTF-8");
int max_rows = 500;
PrintWriter out = res.getWriter();
ArrayList<Invoice> data = new ArrayList<>();
//get connection
try {
Class.forName(JDBC_Connection.JDBC_DRIVER);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
Connection con = DriverManager.getConnection(JDBC_Connection.URL,JDBC_Connection.USER,JDBC_Connection.PASS);
System.out.println("Connection Succesful");
String pageInURL = req.getParameter("page");
int page = Integer.parseInt(pageInURL) * max_rows;
// executing queries
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM winter_internship ORDER BY sl_no LIMIT " + page);
while (rs.next())
{
Invoice s = new Invoice();
s.setSl_no(rs.getInt("sl_no"));
s.setBusiness_code(rs.getString("business_code"));
s.setCust_number(rs.getString("cust_number"));
s.setClear_date(rs.getString("clear_date"));
s.setBuisness_year(rs.getInt("buisness_year"));
String doc_id = rs.getString("doc_id");
doc_id.replace("0","");
s.setDoc_id(doc_id);
s.setPosting_date(rs.getDate("posting_date"));
s.setDue_in_date(rs.getDate("due_in_date"));
s.setBaseline_create_date(rs.getDate("baseline_create_date"));
s.setCust_payment_terms(rs.getString("cust_payment_terms"));
s.setInvoice_currency(rs.getString("invoice_currency"));
s.setDocument_type(rs.getString("document_type"));
s.setPosting_id(rs.getString("posting_id"));
s.setInvoice_id(rs.getInt("invoice_id"));
s.setTotal_open_amount(rs.getDouble("total_open_amount"));
data.add(s);
}
Gson gson = new Gson();
String invoices = gson.toJson(data);
out.print(invoices);
out.flush();
}
catch(SQLException e) {
e.printStackTrace();
}
catch(Exception e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
为什么会出现此错误?
我正在尝试从数据库中获取数据,然后获取 as json 文件。
我不知道代码中哪里有错误,如果有人可以提供帮助并找出解决问题的方法。
我试图用之前工作的不同代码替换 while 子句中的代码,因此 while 子句中似乎没有问题
一定是因为“gson.toJson(data);”此语句返回一个空对象,而您正试图以字符串格式存储它。
这就是为什么它给你一个错误。
试着调查一下。
必须在方法处抛出异常
Integer.parseInt()
尝试找出为什么下面的方法 returns null 到 String 对象。
req.getParameter("page")
package HRCproject;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.gson.Gson;
import HRCproject.pojo.*;
import HRCproject.JDBC_Connection ;
@WebServlet("/fetch")
public class fetch_sevelet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException
{
res.setContentType("application/json");
res.setCharacterEncoding("UTF-8");
int max_rows = 500;
PrintWriter out = res.getWriter();
ArrayList<Invoice> data = new ArrayList<>();
//get connection
try {
Class.forName(JDBC_Connection.JDBC_DRIVER);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
Connection con = DriverManager.getConnection(JDBC_Connection.URL,JDBC_Connection.USER,JDBC_Connection.PASS);
System.out.println("Connection Succesful");
String pageInURL = req.getParameter("page");
int page = Integer.parseInt(pageInURL) * max_rows;
// executing queries
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM winter_internship ORDER BY sl_no LIMIT " + page);
while (rs.next())
{
Invoice s = new Invoice();
s.setSl_no(rs.getInt("sl_no"));
s.setBusiness_code(rs.getString("business_code"));
s.setCust_number(rs.getString("cust_number"));
s.setClear_date(rs.getString("clear_date"));
s.setBuisness_year(rs.getInt("buisness_year"));
String doc_id = rs.getString("doc_id");
doc_id.replace("0","");
s.setDoc_id(doc_id);
s.setPosting_date(rs.getDate("posting_date"));
s.setDue_in_date(rs.getDate("due_in_date"));
s.setBaseline_create_date(rs.getDate("baseline_create_date"));
s.setCust_payment_terms(rs.getString("cust_payment_terms"));
s.setInvoice_currency(rs.getString("invoice_currency"));
s.setDocument_type(rs.getString("document_type"));
s.setPosting_id(rs.getString("posting_id"));
s.setInvoice_id(rs.getInt("invoice_id"));
s.setTotal_open_amount(rs.getDouble("total_open_amount"));
data.add(s);
}
Gson gson = new Gson();
String invoices = gson.toJson(data);
out.print(invoices);
out.flush();
}
catch(SQLException e) {
e.printStackTrace();
}
catch(Exception e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
为什么会出现此错误? 我正在尝试从数据库中获取数据,然后获取 as json 文件。
我不知道代码中哪里有错误,如果有人可以提供帮助并找出解决问题的方法。 我试图用之前工作的不同代码替换 while 子句中的代码,因此 while 子句中似乎没有问题
一定是因为“gson.toJson(data);”此语句返回一个空对象,而您正试图以字符串格式存储它。 这就是为什么它给你一个错误。 试着调查一下。
必须在方法处抛出异常
Integer.parseInt()
尝试找出为什么下面的方法 returns null 到 String 对象。
req.getParameter("page")