2017-10-19 90 views
-3

好吧,让我们从头开始:我比较两个相等的值,但结果说,他们是不同的

在我Mainactivity我有一个连接到MySQL中的数据库,并且发送一个查询并返回另一个空一空用户和密码

我将数据库的名称和密码存储到两个变量中,然后将它们与我在用户的EditText和密码中编写的内容进行比较,问题是如果什么是在EdittText中等于我从数据库中提取的内容,它总是告诉我它们不一样。

这里是代码:

package com.example.merli.loginconmysql; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.os.StrictMode; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

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

public class MainActivity extends Activity { 

    EditText usuario; 
    EditText contra; 
    Button entrar; 
    String usuarioAchequear; 
    String contraAChequear; 

    String bd_usuario = "android"; 
    String bd_contra = "123456"; 
    String bd_url = "jdbc:mysql://192.168.1.13:3306/test" + "?user=" + bd_usuario + "&password=" + bd_contra + "&useUnicode=true&characterEncoding=UTF-8"; 
    Connection conec; 
    Statement estado; 
    ResultSet query; 
    Context contexto = this; 
    int prueba; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 

     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     usuario = (EditText) findViewById(R.id.usuario); 
     contra = (EditText) findViewById(R.id.contrasena); 
     entrar = (Button) findViewById(R.id.entrar); 


     conxecionBaseDatos(); 

     entrar.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       entrarxD(); 
       prueba = usuario.getText().toString().length(); 
       if (usuario.getText().toString() == usuarioAchequear) 
       { 
        AlertDialog.Builder dialogo = new AlertDialog.Builder(contexto); 
        dialogo.setMessage("Bienvenido! " + usuarioAchequear); 
        dialogo.setPositiveButton("Okey", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.cancel(); 
         } 
        }); 

        dialogo.create(); 
        dialogo.show(); 
       }else 
       { 
        AlertDialog.Builder dialogo = new AlertDialog.Builder(contexto); 
        dialogo.setMessage("Usuario o contraseña incorrecta " + prueba); 
        dialogo.setPositiveButton("Okey", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.cancel(); 
         } 
        }); 

        dialogo.create(); 
        dialogo.show(); 
       } 

      } 
     }); 

    } 

    public void conxecionBaseDatos() 
    { 
     try{ 

      Class.forName("com.mysql.jdbc.Driver").newInstance(); 

      conec = DriverManager.getConnection(bd_url); 
      estado = conec.createStatement(); 

     }catch (Exception e) 
     { 
      AlertDialog.Builder dialogo = new AlertDialog.Builder(contexto); 
      dialogo.setMessage(e.getMessage()); 
      dialogo.setPositiveButton("Okey", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.cancel(); 
       } 
      }); 

      dialogo.create(); 
      dialogo.show(); 

     } 
    } 

    public void entrarxD() 
    { 
     try { 
      query = estado.executeQuery("SELECT * FROM tabla WHERE usuario = '" + usuario.getText().toString() + "'"); 

      query.first(); 
      while (query.next()) 
      { 
       usuarioAchequear = query.getString("usuario"); 
       contraAChequear = query.getString("contra"); 
      } 

      AlertDialog.Builder dialogo = new AlertDialog.Builder(contexto); 
      dialogo.setMessage("Usuario:" + usuarioAchequear + " Contraseña:" + contraAChequear); 
      dialogo.setPositiveButton("Okey", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.cancel(); 
       } 
      }); 

      dialogo.create(); 
      dialogo.show(); 

     }catch (Exception e) 
     { 
      AlertDialog.Builder dialogo = new AlertDialog.Builder(contexto); 
      dialogo.setMessage(e.getMessage()); 
      dialogo.setPositiveButton("Okey", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.cancel(); 
       } 
      }); 

      dialogo.create(); 
      dialogo.show(); 
     } 



    } 
} 
+1

请阅读:如何创建一个** **最小的,完整的和可验证的示例](https://开头stackoverflow.com/help/mcve) – Andreas

回答

0

请改变你的if条件如下:

if (usuario.getText().toString().equal(usuarioAchequear)){ 
    //some code here 
} 
0

用绳子,你必须使用equals()方法:

if (usuario.getText().toString().equals(usuarioAchequear)) 
{ 
    //Some codes 
} 
+1

它的工作原理!我觉得很愚蠢,它似乎是如此基本的东西,我来自C#,那里是== – user8799772

+0

很高兴帮助你:) –

0

你应该comapare值

usuario.getText().toString().equals(usuarioAchequear) 

,而不是比较引用

usuario.getText().toString() == usuarioAchequear 

进一步阅读这里:HERE

相关问题