布局文件:
<span style="font-size:18px;"><LinearLayout 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:orientation="vertical" >
<Button
android:id="@+id/sql_create"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="创建数据库"
android:onClick="click"/>
<Button
android:id="@+id/sql_insert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="插入数据"
android:onClick="click"/>
<Button
android:id="@+id/sql_query"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查询数据"
android:onClick="click"/>
<Button
android:id="@+id/sql_update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="修改数据"
android:onClick="click"/>
<Button
android:id="@+id/sql_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除数据"
android:onClick="click"/>
</LinearLayout>
</span>
逻辑代码文件:
<span style="font-size:18px;">package com.example.day14_sqlite;
import com.example.day14_sqlite.utils.MySqlite;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
MySqlite helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
helper=new MySqlite(getApplicationContext());
}
/**
* helper.getWritableDatabase()
*
* helper.getReadableDatabase()
*
* 磁盘没有满的时候 他们俩个是一样 都可以读写
* 磁盘满的时候 getWritableDatabase() 打开失败
* getReadableDatabase() 变成只能读 不能写
*/
public void click(View v)
{
switch(v.getId())
{
case R.id.sql_create:
{
//创建数据库
SQLiteDatabase db=helper.getReadableDatabase();
db.close();
}
break;
case R.id.sql_insert:
{
SQLiteDatabase db=helper.getReadableDatabase();
String sql="insert into person values('林依晨','女',29,'学习')";
db.execSQL(sql);
String sql2="insert into person values('范冰冰','女',30,'逛街')";
db.execSQL(sql2);
String sql3="insert into person values('林志颖','男',41,'赛车')";
db.execSQL(sql3);
String sql4="insert into person values('陈学冬','男',26,'走秀')";
db.execSQL(sql4);
String sql5="insert into person values('胡歌','男',35,'交友')";
db.execSQL(sql5);
}
break;
case R.id.sql_query:
{
SQLiteDatabase db=helper.getReadableDatabase();
String sql="select * from person";
Cursor cursor = db.rawQuery(sql, null);
while(cursor.moveToNext())
{
String name=cursor.getString(cursor.getColumnIndex("name"));
String sex=cursor.getString(cursor.getColumnIndex("sex"));
int age=cursor.getInt(cursor.getColumnIndex("age"));
String love=cursor.getString(cursor.getColumnIndex("love"));
Toast.makeText(getApplicationContext(),name+"\n"+sex+"\n"+age+"\n"+love, 0).show();
}
}
break;
case R.id.sql_update:
{
SQLiteDatabase db=helper.getReadableDatabase();
String sql="update person set age=32 where name='李易峰'";
db.execSQL(sql);
}
break;
case R.id.sql_delete:
{
SQLiteDatabase db=helper.getReadableDatabase();
String sql="delete from person where name='范冰冰'";
db.execSQL(sql);
}
break;
}
}
}</span>
SQLiteOpenHelper操作类:
<span style="font-size:18px;">package com.example.day14_sqlite.utils;
import android.annotation.SuppressLint;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;
public class MySqlite extends SQLiteOpenHelper{
static String NAME="test.db";
static int VERSION=1;
//上下文对象,数据库名称,游标工厂,数据库的版本
public MySqlite(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
public MySqlite(Context context)
{
super(context,NAME,null,VERSION);
}
//数据库第一次创建时调用
@Override
public void onCreate(SQLiteDatabase db) {
String sql="create table person(name varchar(16) primary key,sex char(1),age integer,love varchar(50))";
db.execSQL(sql);
}
//数据库版本发生改变时调用,即数据库版本升级
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
//数据库版本发生改变时调用,即数据库版本降级,只有发生重大错误时才会调用
@SuppressLint("NewApi")
@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
super.onDowngrade(db, oldVersion, newVersion);
}
//每次打开数据库时调用,用于验证数据库打没打开
@Override
public void onOpen(SQLiteDatabase db) {
// TODO Auto-generated method stub
super.onOpen(db);
Log.i("===onOpen===", "数据库打开");
}
}
</span>