數據庫存儲

Sqlite DataBase :數據庫存儲


應用場景:大量結構相似的數據,頻繁的增刪改查,需要用到數據庫


特性:輕量級 免費 多線程 跨平臺



SQL語句:


創建表:CREATE TABLE 表名 (_id INTEGER PRIMARY KEY AUTOINCREMENT,name VERCHAR(10),phone VERCHAR(10));


修改表:ALTER TABLE 表名 ADD 字段 屬性;

eg:    ALTER TABLE student ADD COLUMN age INTEGER;


刪除表:DROP TABLE 表名;




(增)插入數據:INSERT INTO 表名 (字段名) VALUES (值);

eg:       INSERT INTO student (name,phone) VALUES ("李娜","216516");


(刪)刪除數據:DELETE FROM 表名 WHERE 條件語句;

eg:      DELETE FROM student WHERE name="李娜";


(改)修改數據:UPDATE 表名 SET 字段名=值 WHERE 條件語句;

eg:      UPDATE student SET phone="110" WHERE name="李娜";


(查)查詢數據:SELECT * FROM 表名 //WHERE 條件語句 GROUP BY 分組語句 HAVING 分組條件 ORDER BY 排序;  DESC 降序   ASC 升序

eg:      SELECT * FORM student ;





代碼實例中:


注意:新建一個Class,給名字的時候,下面要繼承SqliteOpenHelper類,去掉main方法,重寫構造方法(初學時可以將構造方法中的String name 定死,這樣建立的數據庫名字就是固定的,Factory設爲null;)


例子:



新建的Class(MySqliteOpenHelper)中:


package com.example.lwk_0303_sqliteopenhelper;


import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteOpenHelper;


public class MySqliteOpenHelper extends SQLiteOpenHelper {


public MySqliteOpenHelper(Context context,int version) {//本來有四個,String name代表數據庫名字,這裏給定值,後綴爲db!

super(context, "lwk.db", null, version);              //光標設爲null

// TODO Auto-generated constructor stub//剩下的兩個參數是上下文和版本

}


@Override

public void onCreate(SQLiteDatabase db) {

//創建新表,用到數據庫語言

String sql="CREATE TABLE nvshen (id INTEGER PRIMARY KEY AUTOINCREMENT,name VERCHAR(10),age INTEGER,phone VERCHAR(10));";

db.execSQL(sql);

}


@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// TODO Auto-generated method stub


}


}




上下文:



package com.example.lwk_0303_sqliteopenhelper;


import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;


public class MainActivity extends Activity {


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

MySqliteOpenHelper mySqliteOpenHelper=new MySqliteOpenHelper(this, 1);//下次啓動時版本若是改變了,MySqliteOpenHelper會調用onUpgrade()方法!

mySqliteOpenHelper.getReadableDatabase();

}


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

}


}











增刪改查代碼示例:




package com.example.lwk_0303_sqliteopenhelper;


import java.util.ArrayList;


import android.os.Bundle;

import android.app.Activity;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.TextView;


public class MainActivity extends Activity implements OnClickListener{


private SQLiteDatabase mDb;

private TextView mTv_01;

ArrayList<Data> arrayList = new ArrayList<MainActivity.Data>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findViewById(R.id.button1).setOnClickListener(this);//增

findViewById(R.id.button2).setOnClickListener(this);//刪

findViewById(R.id.button3).setOnClickListener(this);//改

findViewById(R.id.button4).setOnClickListener(this);//查

mTv_01 = (TextView) findViewById(R.id.textView1);

MySqliteOpenHelper mySqliteOpenHelper=new MySqliteOpenHelper(this, 1);

mDb = mySqliteOpenHelper.getReadableDatabase();

}


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

}

class Data{

String name;

int age;

String phone;

public Data(String name, int age, String phone) {

super();

this.name = name;

this.age = age;

this.phone = phone;

}

@Override

public String toString() {

return "Data [name=" + name + ", age=" + age + ", phone=" + phone

+ "]";

}

}


//爲使代碼可讀性更高,下面的方法可以另外封裝起來,筆者這裏未封裝!!

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.button1:

String sql="insert into nvshen (name,age,phone) values ('麗麗',18,'45248')";

mDb.execSQL(sql);

break;

case R.id.button2:

String sql2="delete from nvshen where name='麗麗'";

mDb.execSQL(sql2);

break;

case R.id.button3:

String sql3="update nvshen set phone='120' where name='麗麗'";

mDb.execSQL(sql3);

break;

case R.id.button4:

arrayList.clear();

String sql4="select * from nvshen";

Cursor cursor = mDb.rawQuery(sql4, null);

//將光標移到第一個位置

boolean toFirst = cursor.moveToFirst();

while(toFirst){

String name=cursor.getString(cursor.getColumnIndex("name"));

int age = cursor.getInt(cursor.getColumnIndex("age"));

String phone = cursor.getString(cursor.getColumnIndex("phone"));

Data data=new Data(name, age, phone);

arrayList.add(data);

//把光標移到下一個位置

toFirst = cursor.moveToNext();

}

mTv_01.setText(arrayList.toString());

break;

default:

break;

}

}


}






ORM:關係對象映射(不需要SQL語句):


package com.example.lwk_0303_sqliteopenhelper;


import java.util.ArrayList;


import android.os.Bundle;

import android.app.Activity;

import android.content.ContentValues;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.TextView;


public class MainActivity extends Activity implements OnClickListener{


private SQLiteDatabase mDb;

private TextView mTv_01;

ArrayList<Data> arrayList = new ArrayList<MainActivity.Data>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findViewById(R.id.button1).setOnClickListener(this);//增

findViewById(R.id.button2).setOnClickListener(this);//刪

findViewById(R.id.button3).setOnClickListener(this);//改

findViewById(R.id.button4).setOnClickListener(this);//查

mTv_01 = (TextView) findViewById(R.id.textView1);

MySqliteOpenHelper mySqliteOpenHelper=new MySqliteOpenHelper(this, 1);

mDb = mySqliteOpenHelper.getReadableDatabase();

}


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

}

class Data{

String name;

int age;

String phone;

public Data(String name, int age, String phone) {

super();

this.name = name;

this.age = age;

this.phone = phone;

}

@Override

public String toString() {

return "Data [name=" + name + ", age=" + age + ", phone=" + phone

+ "]";

}

}


@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.button1:

add_data();

break;

case R.id.button2:

dele_data();

break;

case R.id.button3:

update_data();

break;

case R.id.button4:

find_data();

break;

default:

break;

}

}


private void find_data() {

arrayList.clear();

Cursor cursor = mDb.query("nvshen", new String[]{"name","age","phone"}, null, null, null, null, null);

                         //表名,需要被查找的列名,條件語句,佔位符參數,分組條件,佔位符,排序

boolean toFirst= cursor.moveToFirst();

while(toFirst){

String name = cursor.getString(cursor.getColumnIndex("name"));

String phone = cursor.getString(cursor.getColumnIndex("phone"));

int age = cursor.getInt(cursor.getColumnIndex("age"));

Data data=new Data(name, age, phone);

arrayList.add(data);

toFirst=cursor.moveToNext();

}

mTv_01.setText(arrayList.toString());

}


private void update_data() {

ContentValues values=new ContentValues();

values.put("age", 19);

mDb.update("nvshen", values, "name=?", new String[]{"娜娜"});

}             //表名,修改的值(new出來),條件語句,條件語句的佔位符(條件語句的值)


private void dele_data() {

mDb.delete("nvshen", "name=?", new String[]{"娜娜"});

         //表名,條件語句,條件語句的佔位符(條件語句的值)

}


private void add_data() {

ContentValues values=new ContentValues();

values.put("name", "娜娜");

values.put("age", 18);

values.put("phone", "5614665");

mDb.insert("nvshen", null, values);

}             //表名,規避插入時語句的錯誤(沒有值的時候默認給的值),插入的值


}




























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章