日韩性视频-久久久蜜桃-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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产不卡网 | 免费20分钟超爽视频 | 成人亚洲电影 | 久久久久久国产精品免费 | 国产麻豆精品一区 | 欧美13p| 最色网站 | 中文字字幕在线中文 | 天天摸天天干天天操 | 朱竹清到爽高潮痉挛 | 日本少妇高潮 | 国产精品女人精品久久久天天 | 青青毛片 | 人妻熟女一区二区aⅴ水 | 天堂视频一区二区 | 中文字幕三级电影 | 天天躁日日躁狠狠躁伊人 | 人妻熟女aⅴ一区二区三区汇编 | 欧美bbbbbbbbbbbb精品 | 成人深夜影院 | 国产成人欧美 | 色午夜 | 成人免费久久 | 国产专区在线视频 | 福利电影在线播放 | 亚洲一区电影 | 污污视频网站免费观看 | 五月天狠狠操 | 无码人妻丰满熟妇精品 | 丰满少妇一区二区 | 亚洲砖区区免费 | 黄色av免费在线播放 | 一道本久在线中文字幕 | 国产精品福利在线播放 | 国产亚州av| 日韩三级在线 | 久久精品久久精品久久 | 九色.com| 女同久久另类69精品国产 | 欧美人妻一区二区 | 色屁屁www影院免费观看入口 | aaa影院 | 午夜影视体验区 | 日本护士体内she精2xxx | 把高贵美妇调教成玩物 | 国产剧情自拍 | 欧洲亚洲一区 | 欧美videos另类极品 | 国产黄色片免费在线观看 | 天天爱夜夜爽 | 亚洲一级伦理 | 69视频免费看 | 少妇人妻偷人精品视频蜜桃 | 国内一级黄色片 | 影音先锋91 | 欧美欧美欧美 | 亚洲国产中文字幕 | 日本少妇b | 国产在线观看不卡 | 欧美色国 | 蜜桃久久av | 国产情侣av自拍 | 欧美黄色a级 | 国产成人不卡 | 男女草逼视频 | 香蕉视频网站在线观看 | 免费黄网站在线观看 | 玖草视频在线 | 亚洲激情影院 | 欧美性大战xxxxx久久久 | 一区二区福利电影 | 国产尤物视频在线观看 | 日本免费精品视频 | 91精品国产高清91久久久久久 | av成人在线免费观看 | 艳母动漫在线播放 | 人人爽人人爱 | 欧美久久久久久久久久久 | 激情午夜影院 | 狠狠操夜夜操 | 成人午夜网站 | 男人深夜网站 | 99国产在线播放 | av五月天在线 | 色吧av色av | 最近中文字幕无免费 | 国产ts丝袜人妖系列视频 | 激情四射网 | 国产欧美视频在线观看 | 国产免费一级视频 | 免费久久久| 成人免费xxxxxx视频 | 日本不卡一区二区在线观看 | 国产无套在线观看 | 黄色片的网站 | 亚洲精品小视频 | 久久精品国产欧美亚洲人人爽 | 亚洲精品日韩av | 精品亚洲一区二区三区 |