有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓数据库中的java问题

大家好,我是一名SEO,目前正在实践自己的安卓开发。我研究了安卓开发者网站中的数据库存储,并在记事本中找到了一个示例代码

我试着在我的项目中使用它。在我的项目中,我放置了两个带有OK按钮的编辑框,当点击OK按钮时,编辑框中的数据将被存储,并显示在新页面中

以下是我的项目主类文件的代码

{

    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. # 1 楼答案

    您需要获取数据库适配器的实例

    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方法需要两个参数。我不知道从哪里获取其他数据,所以我只使用了“随机其他字符串”。在需要存储的数据中添加相应的子项

    最后,您需要关闭数据库:

    adapter.close();
    

    您已经成功地存储了信息。有关如何使用控制台查看已输入数据库的数据的帮助,请参见this。(具体请参见页面的sqlite3部分)或者,您可以编写一些代码,在检索后将其显示在屏幕上。如果你想检索信息,你需要阅读有关游标的内容。有关这方面的一些信息,请参见here