2012-03-24 9 views
2

sqliteデータベースの変数を比較したいとし、画面に表示されているテキストが同じであれば、画面にエラーを表示します。私SQLiteでの変数の比較

TextView tv = (TextView) findViewById(R.id.tvSQLinfo); 
    HotOrNot info = new HotOrNot(this); 
    info.open(); 
    String data = info.getData(); 
    info.close(); 
    tv.setText(data); 
if(info.getData().equals(info.getData())){ 
tv.setText("hey"); 
// this prints error 

}

コードをお知らせください(info.getData == info.getData)場合、私はその後、印刷エラー
試してみました。しかし、誰もがそれを行うにはどのように任意のアイデアを持っている場合には、動作しませんでした。 Javaでは

package f.s.l; 

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

public class HotOrNot { 
public static final String KEY_ROWID ="_id"; 
public static final String KEY_DAY ="persons_day"; 

private static final String DATABASE_NAME ="HotOrNotdb"; 

private static final String DATABASE_TABLE ="peopleTable"; 
private static final int DATABASE_VERSION =1; 

private DbHelper ourHelper; 
private final Context ourContext; 
private SQLiteDatabase ourDatabase; 

private static class DbHelper extends SQLiteOpenHelper{ 

public DbHelper(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    // TODO Auto-generated constructor stub 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 
    db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + 

      KEY_DAY + " TEXT NOT NULL);" 


      ); 


} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 
    db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); 
    onCreate(db); 

} 

} 
public HotOrNot(Context c){ 
ourContext =c; 
} 
public HotOrNot open() throws SQLException{ 
ourHelper = new DbHelper(ourContext); 
ourDatabase = ourHelper.getWritableDatabase(); 
return this; 
} 
public void close(){ 

ourHelper.close(); 
} 


public long createEntry1(String day) { 
// TODO Auto-generated method stub 
ContentValues cv = new ContentValues(); 

cv.put(KEY_DAY, day); 


return ourDatabase.insert(DATABASE_TABLE, null, cv); 

} 



public String getData() { 
// TODO Auto-generated method stub 
String [] columns = new String[]{KEY_DAY}; 
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null); 
String result = ""; 

int iDay = c.getColumnIndex(KEY_DAY); 

for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 


    result = result +c.getString(iDay) +"\n"; 
} 


return result; 
} 
} 

答えて

2

、あなたがequalsメソッドを使用する必要がある文字列を比較している場合。お使いの場合には、次のように:同様

if (info.getData().equals(info.getData()) { 
    // do something 
} 

、あなたはケースを気にしないならば、あなたが行うことができます:

if (info.getData().equalsIgnoreCase(info.getData()) { 
    // do something 
} 
+0

私はすでにトップメソッドを試しましたが、アプリケーションを実行するとエラーが出ます。私は入力を感謝します。 – Hashey100

0

まず、私はあなたのコードを理解していない...

if(info.getData().equals(info.getData()))if(1 = 1)と言っているようなものです...決して偽になることはありません。

info.close(); 
tv.setText(data); 
if(info.getData().equals(info.getData())) 

あなたは、データベースを閉じて、その後、オープンであることを、それを必要とするメソッドを実行しよう:さておき、ここでは別の問題である

info.close()を取り除くと、状況は少し良くなるかもしれません。