проблема в базе данных в Android - PullRequest
0 голосов
/ 20 марта 2011

Привет, я SEO и сейчас занимаюсь разработкой собственного Android.Я изучал хранение базы данных на сайте разработчиков Android и нашел пример кода, который должен быть в блокноте.

Я пытался использовать его в своем проекте.В моем проекте я поместил 2 поля редактирования с кнопкой ОК, когда нажата кнопка ОК, данные в окне редактирования сохраняются и отображаются на новой странице.

ниже приведен код моегоФайл основного класса проекта,

{

    b = (Button)findViewById(R.id.widget30);

    et1 = (EditText)findViewById(R.id.et1);
    et2 = (EditText)findViewById(R.id.et2);

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String title = extras.getString(NotesDbAdapter.KEY_ET1);
        String body = extras.getString(NotesDbAdapter.KEY_ET2);
        mRowId = extras.getLong(NotesDbAdapter.KEY_ROWID);

        if (title != null) {
            et1.setText(title);
        }
        if (body != null) {
            et2.setText(body);
        }
    }

    b.setOnClickListener(new View.OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {
            if(et1.getText().toString().length() == 0 && et2.getText().toString().length() == 0)
            {
                et.setVisibility(View.VISIBLE);
                alertbox();
            }
            else
            {
            main.this.finish();
            Intent myIntent = new Intent(v.getContext(), T.class);
             startActivityForResult(myIntent, 0);
            }
        }               
    });
}


public void alertbox() 
{
    et = new TextView(this);
    Builder alert =new AlertDialog.Builder(main.this);
    alert.setTitle("Alert");
    alert.setMessage("Required all fields");
    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener()
    {
         public void onClick(DialogInterface dialog, int whichButton)
         {
            dialog.cancel();
         }
    });
    AlertDialog alert1 = alert.create();
    alert1.show();
}

}

Ниже приведен код DataBaseAdapter

public class NotesDbAdapter {

    public static final String KEY_ET1 = "a";
    public static final String KEY_ET2 = "b";
    public static final String KEY_ROWID = "_id";

    private static final String TAG = "NotesDbAdapter";
    private DatabaseHelper mDbHelper;
    private SQLiteDatabase mDb;
    private static final String DATABASE_CREATE =
        "create table notes (_id integer primary key autoincrement, "
        + "title text not null, body text not null);";

    private static final String DATABASE_NAME = "data";
    private static final String DATABASE_TABLE = "notes";
    private static final int DATABASE_VERSION = 2;

    private final Context mCtx;

    private static class DatabaseHelper extends SQLiteOpenHelper {

        DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {

            db.execSQL(DATABASE_CREATE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                    + newVersion + ", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS notes");
            onCreate(db);
        }
    }


    public NotesDbAdapter(Context ctx) {
        this.mCtx = ctx;
    }


    public NotesDbAdapter open() throws SQLException {
        mDbHelper = new DatabaseHelper(mCtx);
        mDb = mDbHelper.getWritableDatabase();
        return this;
    }

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



    public long createNote(String a, String b) {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_ET1, a);
        initialValues.put(KEY_ET2, b);

        return mDb.insert(DATABASE_TABLE, null, initialValues);
    }


    public boolean deleteNote(long rowId) {

        return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
    }


    public Cursor fetchAllNotes() {

        return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_ET1,
                KEY_ET2}, null, null, null, null, null);
    }


    public Cursor fetchNote(long rowId) throws SQLException {

        Cursor mCursor =

            mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
                    KEY_ET1, KEY_ET2}, KEY_ROWID + "=" + rowId, null,
                    null, null, null, null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;

    }


    public boolean updateNote(long rowId, String a, String b) {
        ContentValues args = new ContentValues();
        args.put(KEY_ET1, a);
        args.put(KEY_ET2, b);

        return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
    }
}

, когда я запускаю проект, открывается новая страница, но введенные данные там не отображаются.

что должно быть ошибкой.Пожалуйста, научите меня

1 Ответ

1 голос
/ 21 марта 2011

Вам понадобится получить экземпляр адаптера базы данных

.
NotesDbAdapter adapter = new NotesDbAdapter(this); //pass activity context as a param

тогда вам нужно использовать метод open нового объекта базы данных, чтобы открыть базу данных

adapter.open();

теперь вызывайте метод store

String str = myEditText.getText().toString();
String str1 = "random other string";
adapter.createNote(str, str1);

Я заметил, что ваш метод createNote принимает два параметра. Я не знаю, откуда вы хотите получить другие данные, поэтому я просто использовал «случайную другую строку». Sub в данных, которые вы хотите сохранить в зависимости от обстоятельств.

Наконец, вам нужно закрыть базу данных:

adapter.close();

И вы успешно сохранили информацию. См. this для получения справки о том, как использовать консоль для просмотра данных, введенных вами в базу данных. (См., В частности, часть страницы sqlite3). В качестве альтернативы, вы можете написать код для отображения на экране после извлечения. Вам нужно будет прочитать о курсорах, если вы хотите получить информацию. См. здесь для получения дополнительной информации об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...