Android 小项目之SQLite使用 (附源码)

[ 2011-12-25 10:45:18 | 作者: admin ]
字号: | |
 每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库 --大名鼎鼎的SQLite。SQLite是一款轻量级数据库,它的设计目的是嵌入式,而且它占用的资源非常少,在嵌入式设备中,可能只需要几百KB,这也是 Android 系统采用 SQLite 数据库的原因之一吧。

简介

•轻量级
使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。

•独立性
SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。

•隔离性
SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。

•跨平台
SQLite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统也是能够运行,比如:Android。

•多语言接口
SQLite 数据库支持多语言编程接口。

•安全性
SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。


首先先来看一下本篇例子继承 SQLiteOpenHelper 类实现的 dbHelper 类。
package com.terry;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class dbHelper extends SQLiteOpenHelper {

         private final static String DATABASE_NAME="sec_db";
         private final static int DATABASE_VERSION=1;
         private final static String TABLE_NAME="sec_pwd";
         public final static String FIELD_ID="_id";
         public final static String FIELD_TITLE="sec_Title";
        
        
         public dbHelper(Context context)
         {
                super(context, DATABASE_NAME,null, DATABASE_VERSION);
         }
        
        
          
         @Override
         public void onCreate(SQLiteDatabase db) {
                // TODO Auto-generated method stub
                String sql="Create table "+TABLE_NAME+"("+FIELD_ID+" integer primary key autoincrement,"
                +FIELD_TITLE+" text );";
                db.execSQL(sql);
                
                  
         }

         @Override
         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                // TODO Auto-generated method stub
                String sql=" DROP TABLE IF EXISTS "+TABLE_NAME;
                db.execSQL(sql);
                onCreate(db);
         }

         public Cursor select()
         {
                SQLiteDatabase db=this.getReadableDatabase();
                Cursor cursor=db.query(TABLE_NAME, null, null, null, null, null, " _id desc");
                return cursor;
         }
        
         public long insert(String Title)
         {
                SQLiteDatabase db=this.getWritableDatabase();
                ContentValues cv=new ContentValues();
                cv.put(FIELD_TITLE, Title);
                long row=db.insert(TABLE_NAME, null, cv);
                return row;
         }
        
         public void delete(int id)
         {
                SQLiteDatabase db=this.getWritableDatabase();
                String where=FIELD_ID+"=?";
                String[] whereValue={Integer.toString(id)};
                db.delete(TABLE_NAME, where, whereValue);
         }
        
         public void update(int id,String Title)
         {
                SQLiteDatabase db=this.getWritableDatabase();
                String where=FIELD_ID+"=?";
                String[] whereValue={Integer.toString(id)};
                ContentValues cv=new ContentValues();
                cv.put(FIELD_TITLE, Title);
                db.update(TABLE_NAME, cv, where, whereValue);
         }
        
        
        
        
}






现在dbHelper己经封装完毕,接下来正式进入到我们实际例子中要操作的功能吧,项目运行效果图

attachments/201112/25_104806_201108091228042695.png




这里用到了Menu做功能按钮,实例代码如下:
package com.terry;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteCursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;

public class testDbActivity extends Activity {
        
         private dbHelper db;
         private Cursor myCursor;
         private ListView myListView;
         private EditText myEditText;
         private int _id;
         protected final static int MENU_ADD=Menu.FIRST;
         protected final static int MENU_EDIT=Menu.FIRST+1;
         protected final static int MENU_DELETE=Menu.FIRST+2;
        
               @Override
         public boolean onCreateOptionsMenu(Menu menu) {
                // TODO Auto-generated method stub
                     super.onCreateOptionsMenu(menu);
                menu.add(Menu.NONE, MENU_ADD, 0, R.string.ADD);
                menu.add(Menu.NONE, MENU_EDIT, 0,R.string.EDIT);
                menu.add(Menu.NONE, MENU_DELETE, 0,R.string.DELETE);
                  return true;
         }
        
               @Override
         public boolean onOptionsItemSelected(MenuItem item) {
                // TODO Auto-generated method stub
                
                super.onOptionsItemSelected(item);
                switch (item.getItemId()) {
                case MENU_ADD:
                     operation("add");
                     break;
                case MENU_EDIT:
                     operation("edit");
                     break;
                case MENU_DELETE:
                     operation("delete");
                     break;
                default:
                     break;
                }
                return true;
         }
              
              
              
         /** Called when the activity is first created. */
         @Override
         public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                myEditText=(EditText)findViewById(R.id.EditText1);
                myListView=(ListView)findViewById(R.id.ListView1);
                db=new dbHelper(testDbActivity.this);
                myCursor=db.select();
                SimpleCursorAdapter adpater=new SimpleCursorAdapter(this
                     , R.layout.test, myCursor,
                     new String[]{dbHelper.FIELD_TITLE},
                     new int[]{R.id.topTextView});
                myListView.setAdapter(adpater);
                
                myListView.setOnItemClickListener(new OnItemClickListener() {

                     @Override
                     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                     long arg3) {
                     // TODO Auto-generated method stub
                     myCursor.moveToPosition(arg2);
                     _id=myCursor.getInt(0);
                     myEditText.setText(myCursor.getString(1));
                     }
                });
                
                
                myListView.setOnItemSelectedListener(new OnItemSelectedListener() {

                     @Override
                     public void onItemSelected(AdapterView<?> arg0, View arg1,
                     int arg2, long arg3) {
                     // TODO Auto-generated method stub
                     SQLiteCursor sc=(SQLiteCursor)arg0.getSelectedItem();
                     _id=sc.getInt(0);
                     myEditText.setText(sc.getString(1));
                     }

                     @Override
                     public void onNothingSelected(AdapterView<?> arg0) {
                     // TODO Auto-generated method stub
                    
                     }
                });
         }
         private void operation(String cmd)
         {
                if(myEditText.getText().toString().equals(""))
                return;
                if(cmd=="add")
                     db.insert( myEditText.getText().toString());
                if(cmd=="edit")
                     db.update(_id, myEditText.getText().toString());
                if(cmd=="delete")
                     db.delete(_id);
                myCursor.requery();
                myListView.invalidateViews();
                myEditText.setText("");
                _id=0;
                
         }
        
      
        
        
        
        
        
        
        
}

完整源码: 点击下载

文章来源:http://www.cnblogs.com/terryblog/archive/2010/06/12/1757166.html
[最后修改由 admin, 于 2011-12-25 10:57:31]
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1772

这篇日志没有评论。

此日志不可发表评论。