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错误,开始处理许多不符合样式规则的标识符:
- 变量名和方法名以小写字母开头
- 变量名、方法名、类名或包名中没有下划线(
)
- 使用驼峰大小写,而不是单词之间的下划线(常量名称除外)