0

テーブル内のすべてのデータを消去できるメソッドで SQL クエリを実行したいと考えています。私の解決策は機能しますが、それが非常にクリーンであるとは思えず、陪審員は感謝します。

現在、パラメーターに日付を指定してメソッドを呼び出していますが、使用する必要はありません。それが私が見つけた唯一の解決策です。ボイドを入れようとすると、論理的にリターンを使うこのメソッドは使えません。

public long Effacer(String date) {
    return ourDatabase.delete(DATABASE_TABLE, null, null);
}

さて、あなたにとって、テーブルを削除して再作成するためのよりクリーンな方法は何ですか。メソッド une DbHelper を作成しましたが、どうすれば彼女を呼び出すことができるかわかりません。それがよりクリーンな方法だと思いますが、私は初心者なのでよくわかりません。あなたは何を考えていますか?

(私はコードに私のテストを入れました)これが私のコードです:

HotOrNot.java

public class HotOrNot
{
    public static final String  KEY_ID              = "id_operation";
    public static final String  KEY_MONTANT         = "montant";
    public static final String  KEY_DESCRIPTION     = "description";
    public static final String  KEY_DATE            = "date";

    private static final String DATABASE_NAME       = "MyBudget";
    private static final String DATABASE_TABLE      = "Operations";
    private static final int    DATABASE_VERSION    = 1;

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

    public static class DbHelper extends SQLiteOpenHelper
    {
        // Constructeur
        public DbHelper(Context context)
        {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db)
        {
            db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ID
                    + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_DATE
                    + " TEXT NOT NULL, " + KEY_MONTANT + " TEXT NOT NULL, "
                    + KEY_DESCRIPTION + " TEXT NOT NULL);");
        }

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

        public void onDelete()
        {
            ourDatabase.execSQL("DROP TABLE " + DATABASE_TABLE);
            ourDatabase.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ID
                    + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_DATE
                    + " TEXT NOT NULL, " + KEY_MONTANT + " TEXT NOT NULL, "
                    + KEY_DESCRIPTION + " TEXT NOT NULL);");
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
            // TODO Auto-generated method stub

        }

    }
    // constructeur
    public HotOrNot(Context c)
    {
        ourContext = c;
    }

    public HotOrNot open() throws SQLException
    {
        ourHelper = new DbHelper(ourContext);
        ourDatabase = ourHelper.getWritableDatabase();
        /*ourDatabase.execSQL("DROP TABLE " + DATABASE_TABLE);
        ourDatabase.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ID
                + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_DATE
                + " TEXT NOT NULL, " + KEY_MONTANT + " TEXT NOT NULL, "
                + KEY_DESCRIPTION + " TEXT NOT NULL);");
                */
        //ourDatabase = ourHelper.

        //ourDatabase = ourHelper.onUpgrade(ourDatabase);*/
        return this;
    }

    public void close()
    {
        ourHelper.close();
    }

    public long createEntry(String date, String montant, String description)
    {
        ContentValues cv = new ContentValues();
        cv.put(KEY_DATE, date);
        cv.put(KEY_MONTANT, montant);
        cv.put(KEY_DESCRIPTION, description);
        return ourDatabase.insert(DATABASE_TABLE, null, cv);
    }

    public String getData()
    {
        String[] columns = new String[]
        { KEY_DATE, KEY_MONTANT, KEY_DESCRIPTION };
        Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null,
                null, null);
        String result = "";

        int iDate = c.getColumnIndex(KEY_DATE);
        int iMontant = c.getColumnIndex(KEY_MONTANT);
        int iDescription = c.getColumnIndex(KEY_DESCRIPTION);

        for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext())
        {
            result = result + c.getString(iDate) + " " + c.getString(iMontant)
                    + " " + c.getString(iDescription) + "\n";
        }

        return result;
    }

    public String getSolde()
    {
        // Création de notre requete et alias
        String query = "SUM(id_operation) AS " + KEY_ID;
        String[] otherColumns = new String[]{ query };
        Cursor cursorBidon = ourDatabase.query(DATABASE_TABLE, otherColumns, null, null, null, null, null);
        cursorBidon.moveToFirst();
        int iOperation = cursorBidon.getColumnIndex(KEY_ID);
        String monSolde = "";
        monSolde = monSolde + cursorBidon.getString(iOperation);
        return monSolde;
    }

    /*
    public void Erase(SQLiteDatabase db)
    {
        db.execSQL("DROP TABLE " + DATABASE_TABLE);
        db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ID
                + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_DATE
                + " TEXT NOT NULL, " + KEY_MONTANT + " TEXT NOT NULL, "
                + KEY_DESCRIPTION + " TEXT NOT NULL);");
    }*/

    public long Erase(String date)
    {
        return ourDatabase.delete(DATABASE_TABLE, null, null);
    }

}

SQLiteExample.java (削除ボタンをクリックしたときの部分のみ)

        case R.id.bSQLDelete:
            boolean samarche = true;
            try
            {
                String date = sqlDate.getText().toString();
                HotOrNot entryyy = new HotOrNot(SQLiteExample.this);
                entryyy.open();
                //entryyy.Effacer(date);
                entryyy.close();
            }
4

1 に答える 1

1

一部の人々が私を否定的に判断した理由はわかりません。何も努力していないとは言えません。コメントで私のテストを確認できます。さらに、私は自分の問題に役立つ解決策を持っています。検索していなければ、この方法は決して見つかりませんでした。問題はそれを行う方法と、私がクリーンなものを望んでいることでした。したがって、私の投稿はコンピューティングへの関心によってのみ作成されたと言えます。

ええと、私は助けなしに批判する人が好きではないので、私はあなたに解決策を提供します。これは、私の会社の 1 人が見つけた解決策です。クラス DbHelper のメソッド onDelete を呼び出すための解決策は次のとおりです。

DbHelper dbHelper = new DbHelper(arg0.getContext());
dbHelper.onDelete();

よろしくお願いします。

于 2012-05-22T18:19:40.943 に答える