关于Java String数组的问题希望大神解惑

在一个抽象类类中有这么一句话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和密码呢

5个回答

这个只能在存储数据库的时候,存储形式为 (id空格密码),才能通过字符串拆分开来,为什么不分开存储id和密码呢 ??

baidu_30829927
hufz00 回复lwcxgt601184: 就是 不用进行拆分了啊,万一人家密码前是个空格怎么办呢??
3 年多之前 回复
lwcxgt601184
lwcxgt601184 那么分开存储id和密码有什么好处吗
3 年多之前 回复

这个应该没法判断, 只能在存入数据库的时候,确保第一列为ID, 第二列为密码.这样从数据库中读取到数据, 调用AbstractService分割字符串才能保证
msg[0] 为id, msg[1]为密码

这个应该是传值的时候按照一定的顺序进行了字符串的拼接,然后分割成数组之后就是按照拼接的顺序来分割。

你的SQL_LOGIN初始化的时候,第一个问号处不就ID,第二个问好不就密码么,然后下面就用replaceFist把问好代替了啊

调用LoginService时传入的参数需要根据LoginService中定义的规则,所以至于怎么判断,完全看你LoginService怎么制定规则,
比如按你现在的代码传入的参数只要约定必须是“用户ID 密码 IP 端口 状态”,则msg[0],msg[1] 分别是ID和密码。如果不想使用空格分割,
则在LoginService中重新按照新规则分割

public LoginService(String msg) {
this.msg = msg.split("新分割符");//以新分隔符进行分割成数组
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问