私はログイン/レジスタ機能を組み込んだアプリケーションを作っています。私は解決しようとしている問題を作り出しています。データベース値を取得して文字列値に割り当てる
ユーザーがログインしてログインに成功した場合、ログインした電子メールを使用して、インテントを使用して次のアクティビティに渡したいと思います(実際にはそのメールをDbhelperの関数に渡して、そのメールを使ってサインインした人の名前を探し、現在のアクティビティに「ようこそ(名前)」と表示します関数でnullが返され、最終的にアプリがクラッシュすることにつながります。
ここでは、名前を表示したいアクティビティの関数を呼び出しています。
if(!session.loggedIn())
{
Logout();
}
else
{
Intent in = getIntent();
String email = in.getStringExtra("email");
Name.setText("Welcome " + db.findName(email));
}
これは私のDbHelper.javaの中の、私がクエリなどで名前を探している機能です。
public String findName(String user_email)
{
String query = "SELECT " + COLUMN_NAME + " FROM " + USER_TABLE + " WHERE " + COLUMN_EMAIL + " = " + "'" + user_email + "'";
SQLiteDatabase db = this.getWritableDatabase();
//reads for database
Cursor c = db.rawQuery(query, null);
c.moveToFirst();
if(c.getCount() > 0) // if cursor is not empty
{
String n = c.getString(0);
return n;
}
else
{
return null;
}
}
ご覧のとおり、nullが返されます。はい、既にデータベースにエントリがあります。また、関数に電子メールを渡して渡されたものを返そうとしましたが、それでもエラーが出ました。
私はc.getCount()の結果を出力してデバッグを試みましたが、それでもnullを返します。すべてがnullを返しています。私は、私が通過した機能から戻ってきました。 ' public string findName(String user_email) { 文字列クエリ=" SELECT "+ COLUMN_NAME +" FROM "+ USER_TABLE +" WHERE "+ COLUMN_EMAIL +" LIKE "+"% "+ user_email +"% '; " ; SQLiteDatabase db = this.getWritableDatabase(); //データベースを読み取る カーソルc = db.rawQuery(query、null); return user_email; ' それでも私にヌルとクラッシュが与えられました 文字列を消毒するとはどういう意味ですか? – dennis