日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

8.2 Android Basic 数据存储 Database SQLite Demo 2

發布時間:2025/5/22 Android 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8.2 Android Basic 数据存储 Database SQLite Demo 2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

<<SQLiteDemo2.zip>>

SQLite Demo 2

本演練演示一個日記本程序

? ?

  • 新建項目SQLiteDemo2, 編輯res/layout/main.xml 文件

    ? ?

    <?xml version="1.0" encoding="utf-8"?>

    <LinearLayout xmlns:android="http://schemas.android.com/apk

    /res/android"

    android:layout_width="wrap_content" android:layout_height="wrap_content">

    <ListView android:id="@+id/android:list" android:layout_width="wrap_content"

    android:layout_height="wrap_content" />

    <TextView android:id="@+id/android:empty"

    android:layout_width="wrap_content" android:layout_height="wrap_content"

    android:text="沒有日記內容點擊菜單開始寫日記" />

    </LinearLayout>

    ? ?

    2. 在res/layout/ 新建布局文件 diary_row.xml 用于顯示日記的界面:

    <?xml version="1.0" encoding="utf-8"?>

    <RelativeLayout android:id="@+id/row"

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent">

    ? ?

    <TextView android:id="@+id/text1"

    android:layout_width="wrap_content" android:layout_height="30px"

    android:maxWidth="200dip"

    android:textSize="22sp"

    android:layout_marginTop="10dip"

    android:text="標題" />

    <TextView android:id="@+id/created" android:layout_width="wrap_content"

    android:layout_height="35px" android:layout_alignParentRight="true"

    android:layout_marginLeft="10dip"

    android:layout_marginTop="10dip"

    android:text="xxxxxxxx" />

    </RelativeLayout>

    ? ?

    3. 在res/layout/新建布局文件 diary_edit.xml 用于編輯日記的界面

    <?xml version="1.0" encoding="utf-8"?>

    ? ?

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical" android:layout_width="fill_parent"

    android:layout_height="fill_parent">

    ? ?

    <LinearLayout android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content">

    ? ?

    <TextView android:layout_width="wrap_content"

    android:layout_height="wrap_content" android:text="@string/title"

    android:padding="2px" />

    <EditText android:id="@+id/title"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content" android:layout_weight="1" />

    </LinearLayout>

    ? ?

    <TextView android:layout_width="wrap_content"

    android:layout_height="wrap_content" android:text="@string/body" />

    <EditText android:id="@+id/body" android:layout_width="fill_parent"

    android:layout_height="fill_parent" android:layout_weight="1"

    android:scrollbars="vertical" android:gravity="top" />

    ? ?

    <Button android:id="@+id/confirm" android:text="@string/confirm"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content" />

    ? ?

    </LinearLayout>

    ? ?

    4. 打開res/values/string.xml,添加如下內容:

    <?xml version="1.0" encoding="utf-8"?>

    <resources>

    <string name="hello">Hello World, SQLiteDemo2!</string>

    <string name="app_name">SQLiteDemo2</string>

    <string name="menu_insert">添加一篇新日記</string>

    <string name="menu_delete">刪除一篇日記</string>

    <string name="title">標題</string>

    <string name="body">內容</string>

    <string name="confirm">確定</string>

    <string name="edit_diary">編輯日記</string>

    </resources>

    ? ?

    5. 新建DiaryDbAdapter類,用于封裝對數據庫的操作。

    import java.util.Calendar;

    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.SQLiteOpenHelper;

    ? ?

    public class DiaryDbAdapter {

    public static final String KEY_TITLE = "title";

    public static final String KEY_BODY = "body";

    public static final String KEY_ROWID = "_id";

    public static final String KEY_CREATED = "created";

    ? ?

    private static final String TAG = "DiaryDbAdapter";

    private DatabaseHelper mDbHelper;

    private SQLiteDatabase mDb;

    ? ?

    private static final String DATABASE_CREATE = "create table diary (_id integer primary key autoincrement, "

    + "title text not null, body text not null, created text not null);";

    ? ?

    private static final String DATABASE_NAME = "database";

    private static final String DATABASE_TABLE = "diary";

    private static final int DATABASE_VERSION = 1;

    ? ?

    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) {

    db.execSQL("DROP TABLE IF EXISTS diary");

    onCreate(db);

    }

    }

    public DiaryDbAdapter(Context ctx) {

    this.mCtx = ctx;

    }

    public DiaryDbAdapter open() throws SQLException {

    mDbHelper = new DatabaseHelper(mCtx);

    mDb = mDbHelper.getWritableDatabase();

    return this;

    }

    ? ?

    public void closeclose() {

    mDbHelper.close();

    }

    ? ?

    public long createDiary(String title, String body) {

    ContentValues initialValues = new ContentValues();

    initialValues.put(KEY_TITLE, title);

    initialValues.put(KEY_BODY, body);

    Calendar calendar = Calendar.getInstance();

    String created = calendar.get(Calendar.YEAR) + ""

    + calendar.get(Calendar.MONTH) + ""

    + calendar.get(Calendar.DAY_OF_MONTH) + ""

    + calendar.get(Calendar.HOUR_OF_DAY) + ""

    + calendar.get(Calendar.MINUTE) + "";

    initialValues.put(KEY_CREATED, created);

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

    }

    ? ?

    public boolean deleteDiary(long rowId) {

    ? ?

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

    }

    ? ?

    public Cursor getAllNotes() {

    ? ?

    return mDb.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_TITLE,

    KEY_BODY, KEY_CREATED }, null, null, null, null, null);

    }

    ? ?

    public Cursor getDiary(long rowId) throws SQLException {

    ? ?

    Cursor mCursor =

    ? ?

    mDb.query(true, DATABASE_TABLE, new String[] { KEY_ROWID, KEY_TITLE,

    KEY_BODY, KEY_CREATED }, KEY_ROWID + "=" + rowId, null, null,

    null, null, null);

    if (mCursor != null) {

    mCursor.moveToFirst();

    }

    return mCursor;

    ? ?

    }

    ? ?

    public boolean updateDiary(long rowId, String title, String body) {

    ContentValues args = new ContentValues();

    args.put(KEY_TITLE, title);

    args.put(KEY_BODY, body);

    Calendar calendar = Calendar.getInstance();

    String created = calendar.get(Calendar.YEAR) + ""

    + calendar.get(Calendar.MONTH) + ""

    + calendar.get(Calendar.DAY_OF_MONTH) + ""

    + calendar.get(Calendar.HOUR_OF_DAY) + ""

    + calendar.get(Calendar.MINUTE) + "";

    args.put(KEY_CREATED, created);

    ? ?

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

    }

    }

    ? ?

    ? ?

    6. 新建類DiaryEditActivity類繼承自Activity類用于編輯日記:

    import android.app.Activity;

    import android.content.Intent;

    import android.os.Bundle;

    import android.view.View;

    import android.widget.Button;

    import android.widget.EditText;

    ? ?

    public class DiaryEditActivity extends Activity {

    private EditText mTitleText;

    private EditText mBodyText;

    private Long mRowId;

    private DiaryDbAdapter mDbHelper;

    ? ?

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    mDbHelper = new DiaryDbAdapter(this);

    mDbHelper.open();

    setContentView(R.layout.diary_edit);

    ? ?

    mTitleText = (EditText) findViewById(R.id.title);

    mBodyText = (EditText) findViewById(R.id.body);

    ? ?

    Button confirmButton = (Button) findViewById(R.id.confirm);

    ? ?

    mRowId = null;

    // 每一個intent都會帶一個Bundle型的extras數據。

    Bundle extras = getIntent().getExtras();

    if (extras != null) {

    String title = extras.getString(DiaryDbAdapter.KEY_TITLE);

    String body = extras.getString(DiaryDbAdapter.KEY_BODY);

    mRowId = extras.getLong(DiaryDbAdapter.KEY_ROWID);

    ? ?

    if (title != null) {

    mTitleText.setText(title);

    }

    if (body != null) {

    mBodyText.setText(body);

    }

    }

    ? ?

    confirmButton.setOnClickListener(new View.OnClickListener() {

    public void onClick(View view) {

    String title = mTitleText.getText().toString();

    String body = mBodyText.getText().toString();

    if (mRowId != null) {

    mDbHelper.updateDiary(mRowId, title, body);

    } else

    mDbHelper.createDiary(title, body);

    Intent mIntent = new Intent();

    setResult(RESULT_OK, mIntent);

    finish();

    }

    ? ?

    });

    }

    }

    ? ?

    ? ?

    7. 編輯SQLiteDemo2類

    ? ?

    import android.app.Activity;

    import android.app.ListActivity;

    import android.content.Intent;

    import android.database.Cursor;

    import android.os.Bundle;

    import android.view.Menu;

    import android.view.MenuItem;

    import android.view.View;

    import android.widget.ListView;

    import android.widget.SimpleCursorAdapter;

    ? ?

    public class SQLiteDemo2 extends ListActivity {

    private static final int ACTIVITY_CREATE = 0;

    private static final int ACTIVITY_EDIT = 1;

    ? ?

    private static final int INSERT_ID = Menu.FIRST;

    private static final int DELETE_ID = Menu.FIRST + 1;

    ? ?

    private DiaryDbAdapter mDbHelper;

    private Cursor mDiaryCursor;

    ? ?

    ? ?

    @Override

    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    mDbHelper = new DiaryDbAdapter(this);

    mDbHelper.open();

    renderListView();

    ? ?

    }

    ? ?

    private void renderListView() {

    mDiaryCursor = mDbHelper.getAllNotes();

    startManagingCursor(mDiaryCursor);

    String[] from = new String[] { DiaryDbAdapter.KEY_TITLE,

    DiaryDbAdapter.KEY_CREATED };

    int[] to = new int[] { R.id.text1, R.id.created };

    SimpleCursorAdapter notes = new SimpleCursorAdapter(this,

    R.layout.diary_row, mDiaryCursor, from, to);

    setListAdapter(notes);

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

    super.onCreateOptionsMenu(menu);

    menu.add(0, INSERT_ID, 0, R.string.menu_insert);

    menu.add(0, DELETE_ID, 0, R.string.menu_delete);

    return true;

    }

    ? ?

    public boolean onMenuItemSelected(int featureId, MenuItem item) {

    switch (item.getItemId()) {

    case INSERT_ID:

    createDiary();

    return true;

    case DELETE_ID:

    mDbHelper.deleteDiary(getListView().getSelectedItemId());

    renderListView();

    return true;

    }

    return super.onMenuItemSelected(featureId, item);

    }

    ? ?

    private void createDiary() {

    Intent i = new Intent(this, DiaryEditActivity.class);

    startActivityForResult(i, ACTIVITY_CREATE);

    }

    ? ?

    protected void onListItemClick(ListView l, View v, int position, long id) {

    super.onListItemClick(l, v, position, id);

    Cursor c = mDiaryCursor;

    c.moveToPosition(position);

    Intent i = new Intent(this, DiaryEditActivity.class);

    i.putExtra(DiaryDbAdapter.KEY_ROWID, id);

    i.putExtra(DiaryDbAdapter.KEY_TITLE, c.getString(c

    .getColumnIndexOrThrow(DiaryDbAdapter.KEY_TITLE)));

    i.putExtra(DiaryDbAdapter.KEY_BODY, c.getString(c

    .getColumnIndexOrThrow(DiaryDbAdapter.KEY_BODY)));

    startActivityForResult(i, ACTIVITY_EDIT);

    }

    ? ?

    @Override

    protected void onActivityResult(int requestCode, int resultCode,

    Intent intent) {

    super.onActivityResult(requestCode, resultCode, intent);

    renderListView();

    }

    }

    ? ?

    8. 在AndroidManifest.xml 中配置

    <activity android:name="DiaryEditActivity"></activity>

    ? ?

    ? ?

轉載于:https://www.cnblogs.com/xingquan/archive/2011/03/25/1995718.html

總結

以上是生活随笔為你收集整理的8.2 Android Basic 数据存储 Database SQLite Demo 2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。