在一个抽象类类中有这么一句话protected String[] msg = null;
public AbstractService(String msg) {
this.msg = msg.split(Param.SPACE);//以空格为分隔符进行分割成数组
}
没有为msg这个String数组赋值,然后有一个子类继承这个抽象类其中有这么几句话/** 登陆账号密码核对 */
private static final String SQL_LOGIN = "SELECT * FROM USERLOGIN WHERE USERID = '?' AND PASSWORD = '?';";
 * @param msg 的格式是:用户ID+密码+IP+端口+状态 */
public LoginService(String msg) {
//调用父类(AbstractService)的构造方法
super(msg);
}
String SQL = SQL_LOGIN.replaceFirst("\\?", msg[0]);
SQL = SQL.replaceFirst("\\?", msg[1]);
rs = stat.executeQuery(SQL);
程序怎么判断msg[0],msg[1] 分别是ID和密码呢

解决方案 »

  1.   

    用户ID+密码+IP+端口+状态
    你的+是表示空格吗?另外你的Param.SPACE是如何定义的?因为msg.split()的参数实际是正则表达式字符串,不知你注意到没有?
      

  2.   


    这是Param类中SPACE的定义
    public static String SPACE = " ";
      

  3.   

    用户ID+密码+IP+端口+状态
    既然是用空格分隔,那么各部分内部就不允许出现空格了,比如密码中不能使用空格,如果不能保证,那就不能保证正确获取各部分内容。另外要确保整个串前后都没有空格,各部分之间只能有一个空格分隔,否则也会出错。这样的话,msg[0]就是用户id,msg[1]就是密码,msg[2]就是ip,依次类推。