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

Android学习笔记(SQLite的简单使用)

2015-05-19 23:31 429 查看
1.SQLite介绍

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了

2.SQLiteOpenHelper的使用方法

常用方法
1.getReadableDatabase():得到可读的数据库,返回一个SQLiteDatabase对象,提供一些管理数据库的方法
2.getWritableDatabase():得到一个可写的数据库,返回一个SQLiteDataba
3.onCreate(SQLiteDatabase db):创建一个表
4.onOpen(SQLiteDatabase db):打开数据库
5.onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion):修改数据库的表结构的方法
6.close()
当需要操作数据库的时候,必须先获得一个SQLiteOpenHelper,他是一个抽象类,我们必须写一个类,来继承他,继承之后,我们拥有了getReadableDatabase和getWritableDatabase两个方法,

3.使用adb访问SQLite

进入adb命令行,查询数据库表,和普通的sql语句完全一样(select * from user)

Adb为调试工具,进入命令行 /data/data 当我们创建应用程序的时候,只要应用运行,都会在此目录下生成

当点击创建数据库之后,会生成如下文件夹



进入Databases



链接数据库实例





4.SQLite实现增删改查的Demo

布局代码(线性水平布局,五个按钮)

<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"
tools:context="com.example.sqlitedemo.MainActivity" >

<Button
android:id="@+id/createBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="创建数据库"/>

<Button
android:id="@+id/updateBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="更新数据库"/>

<Button
android:id="@+id/insertDataBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="插入数据"/>

<Button
android:id="@+id/updateDataBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="更新数据"/>

<Button
android:id="@+id/queryDataBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询数据"/>
</LinearLayout>


数据库工具类代码

package com.example.sqlitedemo.db;

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

public class DatabaseHelper extends SQLiteOpenHelper{

private static final int VERSION = 1;
/**
* 在sqliteOpenHelper子类中必须有该构造函数,
* 第一个参数为activity
* 第二个参数:表的名字
* 第三个函数:null
* 第四个参数:数据库的版本
*/

public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}

/**
* 构造函数2
* @param context
* @param name
*/
public  DatabaseHelper(Context context, String name) {
// TODO Auto-generated constructor stub
this(context, name, VERSION);
}

/**
* 构造函数3
* @param context
* @param name
* @param version
*/
public  DatabaseHelper(Context context, String name,int version) {
// TODO Auto-generated constructor stub
this(context, name, null, version);
}

/**
* 该函数在第一次创建数据库的时候执行,第一次得到SQLiteDatabase对象的时候,调用次方法
* @param db
*/
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
System.out.println("创建数据库");
String strCreateSQL = "create table user(id int,name varchar(20))";
db.execSQL(strCreateSQL);
}

/**
* 执行更新数据库
* @param db
* @param oldVersion
* @param newVersion
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
System.out.println("更新数据库");
}

}


数据库操作类代码

package com.example.sqlitedemo;

import com.example.sqlitedemo.db.DatabaseHelper;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

private Button createBtn;
private Button updateBtn;
private Button insertDataBtn;
private Button updateDataBtn;
private Button queryDataBtn;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createBtn = (Button) findViewById(R.id.createBtn);
updateBtn = (Button) findViewById(R.id.updateBtn);
insertDataBtn = (Button) findViewById(R.id.insertDataBtn);
updateDataBtn = (Button) findViewById(R.id.updateDataBtn);
queryDataBtn = (Button) findViewById(R.id.queryDataBtn);

createBtn.setOnClickListener(new createListener());
updateBtn.setOnClickListener(new updateListener());
insertDataBtn.setOnClickListener(new insertDataListener());
updateDataBtn.setOnClickListener(new updateDataListener());
queryDataBtn.setOnClickListener(new queryDataListener());
}

class createListener implements OnClickListener{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl");
SQLiteDatabase  db = dbHelper.getWritableDatabase();

}
}

class updateListener  implements OnClickListener{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//更改数据库实力的版本。默认就会执行onUpgrade方法
DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
SQLiteDatabase  db = dbHelper.getWritableDatabase();
}

}

class insertDataListener  implements OnClickListener{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//生成一个数据库写入时存放数据的对象,键为列名,值为值
ContentValues values = new ContentValues();
values.put("id", 1);
values.put("name", "mzl");

//更改数据库实力的版本。默认就会执行onUpgrade方法
DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
SQLiteDatabase  db = dbHelper.getWritableDatabase();
db.insert("user", null, values);
Toast.makeText(MainActivity.this, "插入成功", Toast.LENGTH_SHORT).show();
}

}

class updateDataListener  implements OnClickListener{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ContentValues values = new ContentValues();
values.put("name", "mzl修改");
//更改数据库实力的版本。默认就会执行onUpgrade方法
DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
SQLiteDatabase  db = dbHelper.getWritableDatabase();
db.update("user", values, "id=?", new String[]{"1"});
Toast.makeText(MainActivity.this, "更新成功", Toast.LENGTH_SHORT).show();
}

}

class queryDataListener  implements OnClickListener{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//更改数据库实力的版本。默认就会执行onUpgrade方法
DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
SQLiteDatabase  db = dbHelper.getReadableDatabase();
Cursor  cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
Toast.makeText(MainActivity.this, name, Toast.LENGTH_SHORT).show();
}
}

}
@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;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: