哇咔咔,SQLite数据库
放眼看去,好多好多方法,罗列了有30条左右,哎呀呀,这可如何是好?!
其实好多方法都很鸡肋,那是为不熟悉sql的开发人员准备的,挑拣了以后也没几个了
开始数据库——->
SQLiteDatabase类
打开数据库
static SQLiteDatabase openDatabase(path, factory, flag)
static SQLiteDatabase openDatabase(path, factory)
static SQLiteDatabase openOrCreateDatabase(File file,factory)
static SQLiteDatabase openOrCreateDatabase(String path,factory)
执行sql语句(增,删,改)
execSOL(String sql, Object[] bindArgs)
execSQL(String sql)
查询数据
Cursor rawQuery(String sql, Object[] bindArgs)
事务
void beginTransaction()
//检查当前是否在事务中
boolean inTransaction()
//设置事务成功
void setTransactionSuccessful()
void endTransaction()
SQLiteDatabase没什么可探索的,几乎不会用到
SQLiteOpenHelper类
一个较实用的类
相关方法:
//以读的方式打开数据库
SQLiteDatabse getReadableDatabase()
//读写方式
SQLiteDatabse getWritableDatabase()
//需要实现的方法
abstract void onCreate(SQLiteDatabse db)//初次创建数据库的时候回调
//数据库版本升级的时候回调
abstract void onUpgrade(SQLiteDatabse db, int oldVersion, int newVersion)
ok,来点实际的代码
//activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.test.MainActivity">
<Button
android:id="@+id/view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="show"
android:onClick="showView" />
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none" />
</LinearLayout>
//cursor_list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:padding="5dp">
<TextView
android:id="@+id/_id"
android:layout_weight="1"
android:textSize="25dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/name"
android:layout_weight="2"
android:textSize="25dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
//MyDBHelper继承自SQLiteOpenHelper
package com.example.test;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class MyDBHelper extends SQLiteOpenHelper {
String create_table = "create table user(_id Integer, name text)";
public MyDBHelper(Context context, String name, int version) {
super(context, name, null, version);
}
/**
* 第一次创建数据库的时候调用,所以可以在这里初始化表和数据
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(create_table);
//初始化20条数据
String sql = "insert into user values(?,?)";
db.beginTransaction(); //开启事务
try {
for(int i=0; i<20; i++){
db.execSQL(sql, new Object[]{i, "name+"+i});
}
//如果运行到此,则事务成功
db.setTransactionSuccessful();
} catch (SQLException e) {
e.printStackTrace();
}finally{
db.endTransaction();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//
}
}
//MainActvivty
package com.example.test;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class MainActivity extends Activity {
ListView lv = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void showView(View v){
String sql = "select * from user";
MyDBHelper db = new MyDBHelper(this, "king", 1);
Cursor c = db.getReadableDatabase().rawQuery(sql, null);
lv = (ListView) findViewById(R.id.lv);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.cursor_list, c, new String[]{"_id","name"}, new int[]{R.id._id, R.id.name});
lv.setAdapter(adapter);
}
}
啦啦啦,数据库就这样吧
祝大家圣诞快乐