Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复数据库登录问题?_Java_Android_Sqlite - Fatal编程技术网

Java 如何修复数据库登录问题?

Java 如何修复数据库登录问题?,java,android,sqlite,Java,Android,Sqlite,我是个初学者,我想问一下我的应用程序有什么问题。我试图用我输入数据库的数据进行日志记录,但它无法识别任何内容。 下面是DatabaseHelperJava文件的代码。我认为问题在于我的checkData\u pseudo\u pass函数。 提前感谢您的回复 DatabaseHelper.java package com.example.tp5; import android.content.ContentValues; import android.content.Context; impo

我是个初学者,我想问一下我的应用程序有什么问题。我试图用我输入数据库的数据进行日志记录,但它无法识别任何内容。 下面是
DatabaseHelper
Java文件的代码。我认为问题在于我的
checkData\u pseudo\u pass
函数。 提前感谢您的回复

DatabaseHelper.java

package com.example.tp5;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME = "database.db";
    public static final String TABLE_NAME = "tp4_table";
    /*
    public static final String COL_1 = "ID";
    public static final String COL_2 = "NOM";
    public static final String COL_3 = "PRENOM";
    public static final String COL_4 = "PSEUDO";
    public static final String COL_5 = "PASS";
    */

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,NOM TEXT,PRENOM TEXT,PSEUDO TEXT,PASS TEXT)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
        onCreate(db);
    }

    public boolean InsererData(String nom, String prenom, String pseudo, String pass){
        SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("nom",nom);
        contentValues.put("prenom",prenom);
        contentValues.put("pseudo", pseudo);
        contentValues.put("pseudo", pass);
        long result = sqLiteDatabase.insert(TABLE_NAME, null, contentValues);
        if(result == -1){
            return false;
        }else{
            return true;
        }
    }
    /*
    public boolean insertData(String nom, String prenom, String pseudo, String pass) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL_2,nom);
        contentValues.put(COL_3,prenom);
        contentValues.put(COL_4,pseudo);
        contentValues.put(COL_5,pass);

        long result = db.insert(TABLE_NAME,null ,contentValues);
        if(result == -1)
            return false;
        else
            return true;
    }
    */

    public Cursor getAllData() {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor res = db.rawQuery("select * from "+TABLE_NAME,null);
        return res;
    }
    /*
    public Boolean checkData_Pass(String pass){
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor res_pass = db.rawQuery("select * from tp4_table where PASS=? ",new String[]{pass});
        if(res_pass.getCount()>0) return false;
        else {
            return true;
        }
    }
    */

    public Boolean checkData_pseudo_pass(String pseudo, String pass){
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor res_unique = db.rawQuery("select * from tp4_table where PSEUDO=? and PASS=?", new String[]{pseudo, pass});
        if(res_unique.getCount()>0) return false;
        else {
            return true;
        }
    }

}
package com.example.tp5;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity3 extends AppCompatActivity{

    DatabaseHelper myDb_connexion; // création de l'objet mydb de type DatabaseHelper

    private Button valider_connexion2 = null;
    private EditText pseudo_connexion = null;
    private EditText pass_connexion = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activitymain3);

        myDb_connexion = new DatabaseHelper(this);

        valider_connexion2  = findViewById(R.id.button3);
        pseudo_connexion =  findViewById(R.id.edit_pseudo_connexion);
        pass_connexion = findViewById(R.id.edit_pass_connexion);

        //EditText textView_pseudo = (EditText) findViewById(R.id.edit_pseudo_connexion);
        //EditText textView_pass = (EditText) findViewById(R.id.edit_pass_connexion);

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

                String _str_pseudo = pseudo_connexion.getText().toString().trim();
                String _str_pass = pass_connexion.getText().toString().trim();

                Intent intent3 = new Intent(MainActivity3.this, MainActivity4.class);
                Boolean check_Pseudo_Pass = myDb_connexion.checkData_pseudo_pass(_str_pseudo, _str_pass);
                //Si Check_Pseudo_Pass affiche le pseudo et le pass
                //if (check_Pseudo_Pass == true && !str_pseudo.equals("") && !str_pass.equals(""))
                if (check_Pseudo_Pass == true)
                {
                    intent3.putExtra("pseudo", _str_pseudo);
                    intent3.putExtra("pass", _str_pass);
                    startActivity(intent3);

                    Toast.makeText(MainActivity3.this,"Connexion réussie !",Toast.LENGTH_SHORT).show();
                }
                else {
                    Toast.makeText(MainActivity3.this,"Connexion raté !",Toast.LENGTH_SHORT).show();
                }

                // Question 7:Connexion unique Login="Admin",pass="root" et Extra enregistre le pseudo et le mot de passe pour le récupérer à la pas MainActivité
                /*
                Intent intent3 = new Intent(MainActivity3.this, MainActivity4.class);
                // if (!str_pseudo.equals("") && !str_pass.equals("") ) {
                if (str_pseudo.equals("Admin") && str_pass.equals("root") ) {
                    intent3.putExtra("pseudo", str_pseudo);
                    intent3.putExtra("pass", str_pass);
                    Toast.makeText(MainActivity3.this,"Connexion réussie !",Toast.LENGTH_SHORT).show();
                    startActivity(intent3);
                }else{
                    Toast.makeText(MainActivity3.this,"Connexion raté !",Toast.LENGTH_SHORT).show();
                }
                */
            }
        });
    }
}
MainActivity3.java

package com.example.tp5;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME = "database.db";
    public static final String TABLE_NAME = "tp4_table";
    /*
    public static final String COL_1 = "ID";
    public static final String COL_2 = "NOM";
    public static final String COL_3 = "PRENOM";
    public static final String COL_4 = "PSEUDO";
    public static final String COL_5 = "PASS";
    */

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,NOM TEXT,PRENOM TEXT,PSEUDO TEXT,PASS TEXT)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
        onCreate(db);
    }

    public boolean InsererData(String nom, String prenom, String pseudo, String pass){
        SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("nom",nom);
        contentValues.put("prenom",prenom);
        contentValues.put("pseudo", pseudo);
        contentValues.put("pseudo", pass);
        long result = sqLiteDatabase.insert(TABLE_NAME, null, contentValues);
        if(result == -1){
            return false;
        }else{
            return true;
        }
    }
    /*
    public boolean insertData(String nom, String prenom, String pseudo, String pass) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL_2,nom);
        contentValues.put(COL_3,prenom);
        contentValues.put(COL_4,pseudo);
        contentValues.put(COL_5,pass);

        long result = db.insert(TABLE_NAME,null ,contentValues);
        if(result == -1)
            return false;
        else
            return true;
    }
    */

    public Cursor getAllData() {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor res = db.rawQuery("select * from "+TABLE_NAME,null);
        return res;
    }
    /*
    public Boolean checkData_Pass(String pass){
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor res_pass = db.rawQuery("select * from tp4_table where PASS=? ",new String[]{pass});
        if(res_pass.getCount()>0) return false;
        else {
            return true;
        }
    }
    */

    public Boolean checkData_pseudo_pass(String pseudo, String pass){
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor res_unique = db.rawQuery("select * from tp4_table where PSEUDO=? and PASS=?", new String[]{pseudo, pass});
        if(res_unique.getCount()>0) return false;
        else {
            return true;
        }
    }

}
package com.example.tp5;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity3 extends AppCompatActivity{

    DatabaseHelper myDb_connexion; // création de l'objet mydb de type DatabaseHelper

    private Button valider_connexion2 = null;
    private EditText pseudo_connexion = null;
    private EditText pass_connexion = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activitymain3);

        myDb_connexion = new DatabaseHelper(this);

        valider_connexion2  = findViewById(R.id.button3);
        pseudo_connexion =  findViewById(R.id.edit_pseudo_connexion);
        pass_connexion = findViewById(R.id.edit_pass_connexion);

        //EditText textView_pseudo = (EditText) findViewById(R.id.edit_pseudo_connexion);
        //EditText textView_pass = (EditText) findViewById(R.id.edit_pass_connexion);

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

                String _str_pseudo = pseudo_connexion.getText().toString().trim();
                String _str_pass = pass_connexion.getText().toString().trim();

                Intent intent3 = new Intent(MainActivity3.this, MainActivity4.class);
                Boolean check_Pseudo_Pass = myDb_connexion.checkData_pseudo_pass(_str_pseudo, _str_pass);
                //Si Check_Pseudo_Pass affiche le pseudo et le pass
                //if (check_Pseudo_Pass == true && !str_pseudo.equals("") && !str_pass.equals(""))
                if (check_Pseudo_Pass == true)
                {
                    intent3.putExtra("pseudo", _str_pseudo);
                    intent3.putExtra("pass", _str_pass);
                    startActivity(intent3);

                    Toast.makeText(MainActivity3.this,"Connexion réussie !",Toast.LENGTH_SHORT).show();
                }
                else {
                    Toast.makeText(MainActivity3.this,"Connexion raté !",Toast.LENGTH_SHORT).show();
                }

                // Question 7:Connexion unique Login="Admin",pass="root" et Extra enregistre le pseudo et le mot de passe pour le récupérer à la pas MainActivité
                /*
                Intent intent3 = new Intent(MainActivity3.this, MainActivity4.class);
                // if (!str_pseudo.equals("") && !str_pass.equals("") ) {
                if (str_pseudo.equals("Admin") && str_pass.equals("root") ) {
                    intent3.putExtra("pseudo", str_pseudo);
                    intent3.putExtra("pass", str_pass);
                    Toast.makeText(MainActivity3.this,"Connexion réussie !",Toast.LENGTH_SHORT).show();
                    startActivity(intent3);
                }else{
                    Toast.makeText(MainActivity3.this,"Connexion raté !",Toast.LENGTH_SHORT).show();
                }
                */
            }
        });
    }
}
考虑这种方法:

public Boolean checkData_pseudo_pass(String pseudo, String pass){
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor res_unique = 
        db.rawQuery("select * from tp4_table where PSEUDO=? and PASS=?", 
                    new String[]{pseudo, pass});
    if (res_unique.getCount() > 0) {
         return false;
    } else {
        return true;
    }
}
如果
tp4_表
中的任何行与给定的
pseudo
pass
匹配,则返回
false
,否则返回
true

换句话说,如果用户名和密码正确,它将失败

测试的逻辑是反向的。应该是:

    if (res_unique.getCount() > 0) {
        return true;
    } else {
        return false;
    }
或者更好的是,就这样:

    return res_unique.getCount() > 0;
如果在这次更改之后仍然有问题,那么它在代码中的其他地方。例如,您可能没有正确填充数据库


您应该返回
boolean
而不是
boolean

并且,您应该修复代码中的大量stye错误,开始处理许多不符合样式规则的标识符:

  • 变量名和方法名以小写字母开头
  • 变量名、方法名、类名或包名中没有下划线(
  • 使用驼峰大小写,而不是单词之间的下划线(常量名称除外)

您面临什么问题?您好haresh,当我想登录时,它没有重新加密用户(伪)和密码,我们可以使用任何东西登录您一直在向db写入吗?它似乎试图调用getReadable(),但没有向其中插入任何数据!是的,Prajwal,我有一个页面可以插入数据进行注册,它可以正常工作,但是当我想记录时,函数checkData\u pseudo\u pass不起作用,我尝试这样更改,如果(res\u unique.getCount()>0)返回true;else{return false;当res_unique.getCount()>0时返回true,但没有结果,它拒绝识别用户和密码,相反,它允许您使用任何文字通过登录。标题不好。重写以总结您的特定技术问题。