重複の可能性:
文字列間の比較が失敗するのはなぜですか?
文字列変数に値を割り当てて保存することができません、私は以下に私のプログラムを与えました
public class MahindraActivity extends Activity {
EditText userid,pwd1;
Button loginbut;
Statement st;
ResultSet rs;
Connection con;
String userrole1;
//String userid1,pass1;
String url="jdbc:microsoft:sqlserver://10.0.2.2:1433;DatabaseName=swingmail";
String user="sa";
String pwd="sa";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mahindra);
userid=(EditText) findViewById(R.id.uname);
//String userid1=userid.getText().toString();
pwd1=(EditText) findViewById(R.id.password);
//String pass1=pwd1.getText().toString();
loginbut=(Button) findViewById(R.id.login);
loginbut.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MahindraActivity.this, "Please Wait"+userid.getText().toString(), 10).show();
login(userid.getText().toString(),pwd1.getText().toString());
}
private void login(String userid1, String pass1) {
// TODO Auto-generated method stub
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con=DriverManager.getConnection(url, user, pwd);
st=con.createStatement();
String str="select userrole from usermaster where m_loginid='"+userid1+"'and m_password='"+pass1+"'" ;
rs= st.executeQuery(str);
while(rs.next()){
userrole1=rs.getString("userrole");
if(userrole1=="admin"){
Intent intent=new Intent(MahindraActivity.this,MainActivity.class);
startActivity(intent);
}
}
}
catch(Exception e){
e.printStackTrace();
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_mahindra, menu);
return true;
}
}
userroleのプロジェクト値をデバッグする場合、テーブルから「admin」を指定しますが、それを文字列変数に割り当てるとString userrole1
、行にnullが表示されます。
while(rs.next()){
userrole1=rs.getString("userrole");
if(userrole1=="admin"){
Intent intent=new Intent(MahindraActivity.this,MainActivity.class);
startActivity(intent);
}
ループをスキップしてキャッチ部分に移動した場合、理由を説明したり、エラーを見つけたりできますか?