您的位置:首页 > 移动开发 > Android开发

android基础之SQLite:

2015-12-31 10:07 363 查看
android存储数据有三种方式:文件存储,SharedPreferences存储,SQLite(轻量级关系型数据库)存储。SQLite与文件存储和SharePrefernces存储的关系:                文件存储和SharedPreferences存储毕竟只适用于去保存一些简单的数据                和键值对,当需要存储大量复杂的关系型数据的时候,你就会发现以上两种存储方式很难应                付得了,但SQLite做得到。一  SQLite相关的类,方法及其参数:          SQLiteOpenHelper 帮助类,借助这个类就可以非常简单地对数据库进行创建和升级。SQLiteOpenHelper 是一个抽象类,这意味着如果我们想要使用它的话,就需要创建一个自己的帮助类去继承它。SQLiteOpenHelper 中有两个抽象方法,分别是onCreate()和onUpgrade(),分别用于创建数据库和升级数据库。       SQLiteOpenHelper 中还有两个非常重要的实例方法, getReadableDatabase() 和getWritableDatabase()。这两个方法都可以创建或打开一个现有的数据库(如果数据库已存在则直接打开,否则创建一个新的数据库),并返回一个可对数据库进行读写操作的对象。不同的是,当数据库不可写入的时候(如磁盘空间已满)getReadableDatabase()方法返回的对象将以只读的方式去打开数据库,而getWritableDatabase()方法则将出现异常。二 SQLite数据的增删改查:Mainactivity:                            package com.example.mydatabasehelper;import android.app.Activity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {private mydatabasehelper dbhelper;private int s=2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button createdb=(Button)findViewById(R.id.button1);Button adddb=(Button)findViewById(R.id.button2);Button deletedb=(Button)findViewById(R.id.button3);Button querydb=(Button)findViewById(R.id.button4);dbhelper=new mydatabasehelper(MainActivity.this, "BookStory.db", null,s);if(s==1){//建立,更新数据createdb.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubdbhelper.getWritableDatabase();}});}else if(s==2){//添加数据adddb.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSQLiteDatabase db=dbhelper.getWritableDatabase();ContentValues cv=new ContentValues();//添加第一条数据cv.put("name", "The Da Vinci Code");cv.put("author", "Dan Brown");cv.put("pages", 454);cv.put("price", 16.96);db.insert("book", null, cv);cv.clear();//添加第二条数据cv.put("name", "The Lost Symbol");cv.put("author", "Dan Brown");cv.put("pages", 567);cv.put("price", 19.68);db.insert("book", null, cv);cv.clear();}});}else if(s!=0){deletedb.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSQLiteDatabase db=dbhelper.getWritableDatabase();db.delete("book", "pages>?", new String[]{"500"});}});
//查询数据:

querydb.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SQLiteDatabase db=dbhelper.getWritableDatabase();
Cursor cursor=db.query("book", null,null , null, null, null, null);

if(cursor.moveToFirst()){
do{
String name=cursor.getString(cursor.getColumnIndex("name"));
String author=cursor.getString(cursor.getColumnIndex("author"));
int pages=cursor.getInt(cursor.getColumnIndex("pages"));
double price=cursor.getDouble(cursor.getColumnIndex("price"));

Log.d("MainActivity", "book name is " + name);
Log.d("MainActivity", "book author is " + author);
Log.d("MainActivity", "book pages is " + pages);
Log.d("MainActivity", "book price is " + price);
}while(cursor.moveToNext());

cursor.close();
}
}
});
}

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}
  mydatabasehelper:package com.example.mydatabasehelper;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;import android.widget.Toast;public class mydatabasehelper extends SQLiteOpenHelper{public static final String CREATE_BOOK="create table book (" +"id integer primary key autoincrement,"+"author text,"+"price real,"+"pages integer,"+"name text)";public static final String CREATE_CATEGORY="create table category ("+"id integer primary key autoincrement,"+"category_name text,"+"category_code integer)";private Context mContext;public mydatabasehelper(Context context, String name,CursorFactory factory, int version) {super(context, name, factory, version);// TODO Auto-generated constructor stubmContext=context;}@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stubdb.execSQL(CREATE_BOOK);db.execSQL(CREATE_CATEGORY);Toast.makeText(mContext, "create succeeded", Toast.LENGTH_LONG).show();}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stubdb.execSQL("drop table if exists book");db.execSQL("drop table if exists category");onCreate(db);}}activity_main.xml:                   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentRight="true"android:layout_alignParentTop="true"android:layout_marginTop="22dp"android:text="创建数据库" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/button1"android:layout_alignRight="@+id/button1"android:layout_below="@+id/button1"android:layout_marginTop="22dp"android:text="添加数据" /><Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignRight="@+id/button2"android:layout_below="@+id/button2"android:layout_marginTop="21dp"android:text="删除数据" /><Buttonandroid:id="@+id/button4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignRight="@+id/button3"android:layout_below="@+id/button3"android:layout_marginTop="34dp"android:text="查询数据" /></RelativeLayout>
-----------from:<第一行代码>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: