java - android数据库的问题

标签 java android database

嗨,我是一名 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;
    }
}

当我运行该项目时,新页面正在打开,但输入的数据未显示在那里。

什么是错误。请教我

最佳答案

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

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

那么需要使用新数据库对象的open方法来打开数据库

adapter.open();

现在调用存储方法

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

我注意到您的 createNote 方法需要两个参数。我不知道你想从哪里获取其他数据,所以我只使用了“随机其他字符串”。根据需要添加您要存储的数据。

最后您需要关闭数据库:

adapter.close();

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

关于java - android数据库的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5367446/

相关文章:

android - 从 Android 手机添加/删除 "Settings"-> "Select Locale"中的语言条目

java - 错误 java.lang.NoSuchMethodError

Java如何将非模式对话框中的双击事件结果传递给父框架?

java - 奇怪的谜题 - 位置的无效内存访问

java - 不使用 cookie 的 Spring Security session

java - Git 存储库分支可以是其他 Git 存储库中的子文件夹吗?

java - 将自定义形状应用于 Android ListView

Android OutOfMemoryError 位图大小超出 VM 预算

c++ - 类型错误 : Result of expression 'dbMasterObject.updateIntoTestResult' [undefined] is not a function

java - 如何在 Java 中隐藏我的数据库信息?