简体   繁体   English

如何在servlet中声明的变量值用于新的Java类中?

[英]How to use a variable value declared in servlet into a new Java class?

I have a login servlet where I have a login query in my post method from the query I am getting username , password , company name and ID 我有一个登录servlet,在该方法中,从查询中获取我的用户名密码公司名称ID的 post方法中的登录查询

I am storing all this values in a variable like 我将所有这些值存储在一个像

protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    String companyDB,nameDB,idDB;

        try {
                    con = DBConnection.createConnection();
                    statement = con.createStatement();
                    String sql = "  SELECT MT_USERS.MT_USERS_VCLOGINCODE AS USERID, MT_USERS.MT_USERS_VCUSERPASSWORD AS PASSWORDID, MT_USERS.MT_USERS_VCUSERNAME AS NAME, (SELECT MT_DISTRIBUTR_VCDISTRIBUTRNAME FROM MT_DISTRIBUTR WHERE MT_DISTRIBUTR_VCDISTRIBUTRCODE = MT_USERS.MT_DISTRIBUTR_VCDISTRIBUTRCODE) AS COMPANYNAME ,(SELECT mt_distributr_vcdistributrcode FROM mt_distributr WHERE MT_DISTRIBUTR_VCDISTRIBUTRCODE = MT_USERS.MT_DISTRIBUTR_VCDISTRIBUTRCODE) AS ID FROM MT_USERS WHERE MT_USERS_VCLOGINCODE='admin' AND MT_USERS_VCUSERPASSWORD ='admin'";
                    resultSet = statement.executeQuery(sql);
                    if (resultSet.next()) {

                        companyDB = resultSet.getString("COMPANYNAME");
                        nameDB = resultSet.getString("name");
                        idDB = resultset.getString("ID");  


                    }

                } catch (SQLException e) {
                    e.printStackTrace();

}
}

Now I have an another class where I am writing a query and in that query I want to use idDB like 现在我有另一个类在其中编写查询,在该查询中我想使用idDB

My new class is 我的新课是

 public class Outlet {
    Connection con = null;
    Statement statement = null;
    ResultSet resultSet = null;

    public List<String> getoutlet() throws ClassNotFoundException, SQLException {
        List<String> list = new ArrayList<String>();
        con = DBConnection.createConnection();
        statement = con.createStatement();

        try {

            ResultSet resultSet = statement.executeQuery("select * from ecustomer where CUSTOMERIDENTIFIER in(select CUSTOMERIDENTIFIER from mt_distributrol where mt_distributr_vcdistributrcode = 'AAAA'");
            while (resultSet.next()) {
                list.add(resultSet.getString("CUSTOMERDESCRIPTOR"));

            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return list;
    }

}

Where mt_distributr_vcdistributrcode = 'AAAA'" at the place of 'AAAA' I have to pass a variable which has the value of idDB 其中mt_distributr_vcdistributrcode ='AAAA'“在“ AAAA”位置,我必须传递一个具有idDB值的变量

You may use a prepared statement here: 您可以在此处使用准备好的语句:

String sql = "SELECT CUSTOMERDESCRIPTOR FROM ecustomer WHERE CUSTOMERIDENTIFIER IN (";
sql += "SELECT CUSTOMERIDENTIFIER FROM mt_distributrol ";
sql += "WHERE mt_distributr_vcdistributrcode = ?)");
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, "AAAA");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
    list.add(resultSet.getString("CUSTOMERDESCRIPTOR"));
}

I actually find that MkYong does a good job of explaining prepared statements in Java, see here , but any good documentation is a good place to start looking. 实际上,我发现MkYong在用Java解释准备好的语句方面做得很好, 请参见此处 ,但是任何好的文档都是开始查找的好地方。 And see Oracle Tutorial . 并参阅Oracle教程

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

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