データベースクエリがSQLiteルームで機能していません

Rashedur Ra​​hman

私はアンドロイドに不慣れです。私はAndroidを学ぼうとしていますが、問題に直面しました。SQLiteの操作中に、挿入操作が実行されています。loadAllユーザーも実行されています。ただし、ユーザーの取得にパラメーターを使用している間は、操作は実行されません。私は以下のコードを共有しています。私を助けてくれてありがとう。

AppHome.java

package com.impresscapital.iclapp;

import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import com.impresscapital.iclapp.dbobj.User;
import com.impresscapital.iclapp.util.ToastMessage;
import com.impresscapital.iclapp.util.UserSigninAuthentication;

public class AppHome extends AppCompatActivity {

    private TextView mUsernameTextView;
    private TextView mPasswordTextView;

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

        initiateUI();
    }

    private void initiateUI(){
        mUsernameTextView=findViewById(R.id.editTextUsername);
        mPasswordTextView=findViewById(R.id.editTextPassword);
    }

    public void signUpPageLoader(View view){
        Intent registrationPageIntent=new Intent(AppHome.this,RegistrationPage.class);
        startActivity(registrationPageIntent);

    }

    @Override
    protected void onResume() {
        super.onResume();
    }

    public void signInUser(View view){
        try {
            String username=mUsernameTextView.getText().toString();
            String password=mPasswordTextView.getText().toString();
            UserSigninAuthentication userSigninAuthentication=new UserSigninAuthentication();
            if (userSigninAuthentication.authenticate(username, password, getApplicationContext())) {
                Intent userHomePageIntent = new Intent(AppHome.this, UserHome.class);
                startActivity(userHomePageIntent);
            } else {
                mPasswordTextView.setBackground(new ColorDrawable(Color.RED));
                mUsernameTextView.setBackground(new ColorDrawable(Color.RED));
                ToastMessage.toastMessage(this, "Username or password do not match");
                onResume();
            }
        }catch (NullPointerException e){
            mPasswordTextView.setBackground(new ColorDrawable(Color.RED));
            mUsernameTextView.setBackground(new ColorDrawable(Color.RED));
            ToastMessage.toastMessage(this, "Username or password do not match");

        }
    }
}

UserSigninAuthentication.java

package com.impresscapital.iclapp.util;

import android.content.Context;
import android.util.Log;

import com.impresscapital.iclapp.database.AppDatabase;
import com.impresscapital.iclapp.database.AppExecutors;
import com.impresscapital.iclapp.dbobj.User;

public class UserSigninAuthentication {

    private AppDatabase mDb;
    private Boolean isAuthenticate=false;

    public boolean authenticate(final String username, final String password,Context context){
        dataBaseOperation(username,password,context);
        return isAuthenticate;
    }

    public void dataBaseOperation(final String username, final String password, final Context context){
        AppExecutors.getsInstance().getDiskIO().execute(new Runnable() {
            @Override
            public void run() {
                try {
                    Log.d("DB","Inside db opt");
                    User user = mDb.userDao().loadUser(username, password);
                    if (user != null){
                        Log.d("DB","user found");
                        //ToastMessage.toastMessage(context,user.getUserID()+user.getEmail());
                        isAuthenticate = true;
                    }
                }catch (NullPointerException n){
                    isAuthenticate=false;
                }
            }
        });
    }
}

UserDao.java

package com.impresscapital.iclapp.dao;

import android.arch.persistence.room.Dao;
import android.arch.persistence.room.Delete;
import android.arch.persistence.room.Insert;
import android.arch.persistence.room.Query;
import android.arch.persistence.room.Update;

import com.impresscapital.iclapp.dbobj.User;

import java.util.List;

@Dao
public interface UserDao {


    @Query("Select * from user_table where username=:username and password=:password")
    User loadUser(String username,String password);

    @Query("Select * from user_table")
    List<User> retrieveAllUser();
    @Insert
    void registerUser(User user);

    @Update
    void updateUser(User user);

    @Delete
    void deleteUser(User user);
}

別のクラスのすべてのユーザーを取得しました。ログコードは

List<User> users=mDb.userDao().retrieveAllUser();
                for(User user1:users){
                    Log.d("Db working",user1.getUsername()+" "+user1.getPassword());
                }
                finish();

そしてログメッセージ:

2018-10-29 13:11:47.210 11488-13813/com.impresscapital.iclapp D/Db working: y y
2018-10-29 13:11:47.210 11488-13813/com.impresscapital.iclapp D/Db working: g 1

AppDatabaseクラスは、便宜上アップロードされています。

AppDatabase.claa

package com.impresscapital.iclapp.database;


import android.arch.persistence.room.Database;
import android.arch.persistence.room.Room;
import android.arch.persistence.room.RoomDatabase;
import android.arch.persistence.room.TypeConverter;
import android.arch.persistence.room.TypeConverters;
import android.content.Context;
import android.util.Log;

import com.impresscapital.iclapp.dao.UserDao;
import com.impresscapital.iclapp.dbobj.User;
import com.impresscapital.iclapp.util.DateConverter;

@Database(entities = {User.class},version = 1, exportSchema = false)
@TypeConverters({DateConverter.class})
public abstract class AppDatabase extends RoomDatabase {

    private static final String LOG_CAT=AppDatabase.class.getSimpleName();
    private static final Object LOCK=new Object();
    private static final String DATABASE_NAME="db_icl_app";
    private static AppDatabase sInstance;

    public static AppDatabase getInstance(Context context){
        if(sInstance==null){
            synchronized (LOCK){
                Log.d(LOG_CAT,"Creating new Database");
                sInstance=Room.databaseBuilder(context.getApplicationContext(),
                        AppDatabase.class,AppDatabase.DATABASE_NAME).build();
            }

        }
        Log.d(LOG_CAT,"Getting the database instance");
        return sInstance;
    }

    public abstract UserDao userDao();
}

UserSigninAuthentication.class

package com.impresscapital.iclapp.util;

import android.content.Context;
import android.util.Log;

import com.impresscapital.iclapp.database.AppDatabase;
import com.impresscapital.iclapp.database.AppExecutors;
import com.impresscapital.iclapp.dbobj.User;

import java.util.List;

public class UserSigninAuthentication {

    private AppDatabase mDb;
    private Boolean isAuthenticate=false;

    public boolean authenticate(final String username, final String password,Context context){
        dataBaseOperation(username.trim(),password.trim(),context);
        return isAuthenticate;
    }

    public void dataBaseOperation(final String username, final String password, final Context context){

        Log.d("Username","username: "+username);
        Log.d("Username","username length: "+username.length());
        Log.d("Password","password:"+password);
        Log.d("Password","password length:"+password.length());
        AppExecutors.getsInstance().getDiskIO().execute(new Runnable() {
            @Override
            public void run() {
                try {
                    List<User> users=mDb.userDao().retrieveAllUser();
                    for(User user1:users){
                        Log.d("Db working","Username:"+user1.getUsername()+" Password:"+user1.getPassword());
                    }
                    Log.d("DB","Inside db opt");
                    List<User> user1 = mDb.userDao().loadUser(username, password);
                    Log.d("Total Users after query","Tot"+ user1.size());
                    //ToastMessage.toastMessage(context,user.getUserID()+user.getEmail());
                    isAuthenticate = true;
                }catch (NullPointerException n){
                    isAuthenticate=false;
                }
                Log.d("isAuthenticate Variable", isAuthenticate.toString());
            }
        });
    }
}

カラン

コードで次のクエリを試してください。

SELECT * FROM user_table WHERE username like :username and password like :password

コメントで述べたように、mDbdbをクエリする前に初期化すると機能しました。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Firebaseリアルタイムデータベースルールが機能していません

RxJavatoMultiMapがルームデータベースクエリで機能しない

リモートsqliteデータベースへのpyodbcは機能していませんが、エラーはスローされません

ルームデータベースがMacBook ProM1で機能していません

文字列日付のMongoShellデータベースクエリが機能していません

SqliteデータベースがSamsungAndroid Oreo8.0デバイスで正しく機能していません

AJAXリクエストは機能していますが、データベースにデータが挿入されていません

Androidルーム-sqlite_sequenceのクリアが機能していません

Worldclimデータベースがランダムサンプルに対して機能していません

ルームデータベースonConflict = OnConflictStrategy.REPLACEが機能していません

Eloquentクエリは結果を取得しませんが、データベースでは機能します

@nbspがphpデータベース値で機能していません

データベースがprimefacesで機能していません

mysqlデータベースがxampp1.8.3で機能していません

FirebaseorderByChildがデータベースで機能していません

Wordpressテーマのルートでデータベースが機能していません

更新クエリが機能していません。Visual Studio 2015 を使用しており、Access データベースを更新しようとしています

モーダルPOST内のHTMLフォームは機能していますが、データベースDjangoに書き込んでいません

リアルタイムデータベース-orderByChild()はonce()で機能し、get()では機能しません

$ incが私のmongoデータベース(ローカルホスト上)で機能していません

GETリクエストがデータベースからデータを取得するために機能していません

AJAXPHPデータベースが機能していませんエラーはありません

バリデーターがAdonisJSのリソースルートで機能していません

MySQLALTERテーブルクエリが機能していません。デフォルトのNull、現在のタイムスタンプの更新時

MYSQLデータ挿入クエリが機能していません

Angular:mat-errorがカスタムバリデーターで機能していません

Angular 6:カスタムバリデーターでsetTimeout関数が機能していません

挿入クエリはローカルでは正常に機能しますが、ライブデータベース(Laravel / MySQL)では実行されません

Spring Integration Java DSL:エラーチャネルでデータベースロガーが機能していません

TOP 一覧

  1. 1

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    Ansibleで複数行のシェルスクリプトを実行する方法

  4. 4

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  8. 8

    Chromeウェブアプリのウェブビューの高さの問題

  9. 9

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  10. 10

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  11. 11

    Reactでclsxを使用する方法

  12. 12

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  13. 13

    MLでのデータ前処理の背後にある直感

  14. 14

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

  15. 15

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  16. 16

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  17. 17

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  18. 18

    テキストフィールドの値に基づいて UIslider を移動します

  19. 19

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  20. 20

    PowerShellの分割ファイルへのヘッダーの追加

  21. 21

    ソートされた検索、ターゲット値未満の数をカウント

ホットタグ

アーカイブ