Java getter 方法返回 null 而不是字符串

标签 java database setter getter

当我从 MyServ 类调用 getName 时,我得到 null,但是当我从 DBClass 本地调用它们时,它们返回字符串。有人知道我做错了什么吗?

package DB;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class DBClass{

    private Statement stmt;
    private Connection conn;
    private ResultSet result;
    public String name, surname;

    public DBClass(){
    }

    public Connection dbConnect(final String db_connect_string,
        final String db_userid,
        final String db_password){

        try{
            DriverManager.registerDriver(new oracle.jdbc.OracleDriver());

            conn =
                DriverManager.getConnection(db_connect_string, db_userid,
                    db_password);

            stmt = conn.createStatement();
            result = stmt.executeQuery("Select * from .....etc");

            if(result.next()){
                name = result.getString(1).toString();
                surname = result.getString(2).toString();
            }
            return conn;

        } catch(final Exception e){
            e.printStackTrace();

            return null;
        }
    }

    public String getName(){
        return name;
    }

    public String getSurname(){
        return surname;
    }

}




package DB;

import java.io.IOException;
import java.sql.Connection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class MyServ
 */
public class MyServ extends HttpServlet{

    private static final long serialVersionUID = 1L;
    private final DBClass dbclass;
    private final String name, surname;

    private final Connection conn;

    public MyServ(){

        dbclass = new DBClass();
        final DBClass db = new DBClass();

        conn =
            db.dbConnect("jdbc:oracle:thin:@elanweb:1510:xxxxx", "xxxxx",
                "xxxxxx");

        name = dbclass.getName();
        surname = dbclass.getSurname();
    }

    @Override
    protected void doGet(final HttpServletRequest request,
        final HttpServletResponse response) throws ServletException,
        IOException{

    }

    @Override
    protected void doPost(final HttpServletRequest request,
        final HttpServletResponse response) throws ServletException,
        IOException{

        System.out.println("MyServer -- " + name + " " + surname);
        response.sendRedirect("http://localhost:8080/DWP/");

    }
}

最佳答案

你的意思肯定是:

name = db.getName();

而不是:

name = dbclass.getName();

您似乎在构造函数中引用了错误的变量,即没有打开连接(dbclass)的变量。

关于Java getter 方法返回 null 而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4284347/

相关文章:

java - 安卓。没有找到启动器 Activity ?

java - 即使在重置存储库后,代码也很慢 (JavaFX)

database - Django model.save() 不写入数据库

c++ - LPTSTR Losing Scope,变通无效 (C++)

java - eclipse中的.sql文件,将其显示为表格?

java - 有没有办法将javadoc集成到TestNG报告中

java - 安卓本地数据库

java - 使用 JDBC PreparedStatement 在 Oracle 中创建序列

java - 更改 setter 的 eclipse 模板,以便实际参数命名为 'value' ?

java - Android 上的 setter getter