1.主要核心类,Sqlite编程要继承SQLiteOpenHelper
1 import android.content.Context; 2 import android.database.sqlite.SQLiteDatabase; 3 import android.database.sqlite.SQLiteDatabase.CursorFactory; 4 import android.database.sqlite.SQLiteOpenHelper; 5 6 public class MySQLiteOpenHelper extends SQLiteOpenHelper { 7 //创建数据库 8 public MySQLiteOpenHelper(Context context, String name, 9 CursorFactory factory, int version) { 10 //当系统发现version高于在本机上存在的版本时,会执行onUpgrade来更新 11 super(context, name, factory, version); 12 } 13 @Override 14 public void onCreate(SQLiteDatabase db) { 15 } 16 17 @Override 18 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 19 20 } 21 }
2.增,查
1 package com.example.sqlite; 2 3 import com.example.sqlite.core.MySQLiteOpenHelper; 4 import com.example.sqlite.listview.SqliteListActivity; 5 6 import android.support.v7.app.ActionBarActivity; 7 import android.content.ContentValues; 8 import android.content.Intent; 9 import android.database.Cursor; 10 import android.database.sqlite.SQLiteDatabase; 11 import android.os.Bundle; 12 import android.view.Menu; 13 import android.view.MenuItem; 14 import android.view.View; 15 import android.widget.TextView; 16 17 public class MainActivity extends ActionBarActivity { 18 public static final String DB_NAME = "mydb"; 19 public static final String DB_COLUMN_NAME = "name"; 20 public static final String DB_COLUMN_GENDER = "gender"; 21 public static final String DB_TABLE = "user"; 22 MySQLiteOpenHelper dbhelper ; 23 24 void create_table(){ 25 SQLiteDatabase dbWireter = dbhelper.getWritableDatabase(); 26 String sql = String.format("CREATE TABLE if not exists %s(%s %s DEFAULT %s,%s %s DEFAULT %s)", 27 DB_TABLE, 28 DB_COLUMN_NAME,"TEXT","NONE", 29 DB_COLUMN_GENDER,"TEXT","NONE"); 30 dbWireter.execSQL(sql); 31 dbWireter.close(); 32 } 33 void initsqlite(){ 34 dbhelper = new MySQLiteOpenHelper(this,DB_NAME,null,1); 35 create_table(); 36 } 37 private void write_sqlite(){ 38 SQLiteDatabase dbWireter = dbhelper.getWritableDatabase(); 39 for (int i = 0; i < 5; i++) { 40 ContentValues cv = new ContentValues(); 41 cv.put(DB_COLUMN_NAME, "zhang"+i); 42 cv.put(DB_COLUMN_GENDER, "male"); 43 dbWireter.insert(DB_TABLE, null, cv); 44 } 45 TextView out = (TextView) findViewById(R.id.tvOut); 46 out.setText("write succ"); 47 dbWireter.close(); 48 } 49 private void select_sqlite(){ 50 SQLiteDatabase dbReader = dbhelper.getReadableDatabase(); 51 Cursor c = dbReader.query(DB_TABLE, null, null, null, null, null, null); 52 String txt = ""; 53 while(c.moveToNext()){ 54 String name = c.getString(c.getColumnIndex(DB_COLUMN_NAME)); 55 String gender = c.getString(c.getColumnIndex(DB_COLUMN_GENDER)); 56 txt += "name="+name+" gender="+ gender +"\n"; 57 } 58 TextView out = (TextView) findViewById(R.id.tvOut); 59 out.setText(txt); 60 dbReader.close(); 61 } 62 @Override 63 protected void onCreate(Bundle savedInstanceState) { 64 super.onCreate(savedInstanceState); 65 66 setContentView(R.layout.activity_main); 67 68 initsqlite(); 69 70 findViewById(R.id.btn_show_inList).setOnClickListener(new View.OnClickListener() { 71 @Override 72 public void onClick(View v) { 73 startActivity(new Intent(MainActivity.this,SqliteListActivity.class)); 74 } 75 }); 76 } 77 78 @Override 79 public boolean onCreateOptionsMenu(Menu menu) { 80 // Inflate the menu; this adds items to the action bar if it is present. 81 getMenuInflater().inflate(R.menu.main, menu); 82 return true; 83 } 84 85 @Override 86 public boolean onOptionsItemSelected(MenuItem item) { 87 // Handle action bar item clicks here. The action bar will 88 // automatically handle clicks on the Home/Up button, so long 89 // as you specify a parent activity in AndroidManifest.xml. 90 int id = item.getItemId(); 91 switch(id){ 92 case R.id.action_create: 93 create_table(); 94 break; 95 case R.id.action_write: 96 write_sqlite(); 97 break; 98 case R.id.action_read: 99 select_sqlite(); 100 break; 101 } 102 return true; 103 } 104 }
3.改,删
1 import com.example.sqlite.R; 2 import com.example.sqlite.core.MySQLiteOpenHelper; 3 4 import android.support.v7.app.ActionBarActivity; 5 import android.app.AlertDialog; 6 import android.content.ContentValues; 7 import android.content.DialogInterface; 8 import android.database.Cursor; 9 import android.database.sqlite.SQLiteDatabase; 10 import android.os.Bundle; 11 import android.view.View; 12 import android.widget.AdapterView; 13 import android.widget.AdapterView.OnItemLongClickListener; 14 import android.widget.EditText; 15 import android.widget.ListView; 16 import android.widget.SimpleCursorAdapter; 17 18 public class SqliteListActivity extends ActionBarActivity { 19 static final String DB = "dbinlist"; 20 static final String TABLE = "user"; 21 static final String NAME = "name"; 22 static final String GENDER = "gender"; 23 24 SimpleCursorAdapter adapter; 25 ListView list; 26 Cursor cur; 27 MySQLiteOpenHelper dbhelper ; 28 SQLiteDatabase writer,reader; 29 30 OnItemLongClickListener itemLongListener = new OnItemLongClickListener() { 31 32 @Override 33 public boolean onItemLongClick(AdapterView<?> parent, View view, 34 final int position, long id) { 35 new AlertDialog.Builder(SqliteListActivity.this).setMessage("what's your choice?") 36 .setNegativeButton("update",new DialogInterface.OnClickListener() { 37 //更新 38 @Override 39 public void onClick(DialogInterface dialog, int which) { 40 Cursor c = adapter.getCursor(); 41 c.moveToPosition(position); 42 int _id = c.getInt(c.getColumnIndex("_id")); 43 ContentValues cv = new ContentValues(); 44 cv.put(NAME,"未名"+_id ); 45 cv.put(GENDER,"未知"+_id ); 46 writer.update(TABLE, cv,"_id=?",new String[]{_id+""}); 47 refreshView(); 48 }}) 49 .setPositiveButton("delete", new DialogInterface.OnClickListener() { 50 //删除 51 @Override 52 public void onClick(DialogInterface dialog, int which) { 53 Cursor c = adapter.getCursor(); 54 c.moveToPosition(position); 55 int _id = c.getInt(c.getColumnIndex("_id")); 56 writer.delete(TABLE, "_id=?", new String[]{_id+""});//_id=?用问号是防止注入 57 refreshView(); 58 } 59 }).show(); 60 return true; 61 } 62 }; 63 64 View.OnClickListener btnListener = new View.OnClickListener() { 65 @Override 66 public void onClick(View v) { 67 final EditText name = (EditText) findViewById(R.id.edtName); 68 final EditText gender = (EditText) findViewById(R.id.edtGender); 69 ContentValues cv = new ContentValues(); 70 cv.put(NAME, name.getText().toString()); 71 cv.put(GENDER, gender.getText().toString()); 72 writer.insert(TABLE, null, cv); 73 refreshView(); 74 } 75 }; 76 77 void refreshView(){ 78 cur = reader.query(TABLE, null, null, null, null, null, null); 79 adapter.changeCursor(cur); 80 } 81 void createTable(){ 82 String sql = String.format( 83 "CREATE TABLE if not exists %s(_id INTEGER PRIMARY KEY autoincrement , %s %s DEFAULT %s,%s %s DEFAULT %s)", TABLE, 84 NAME, "TEXT", "NONE", GENDER, "TEXT", "NONE"); 85 writer.execSQL(sql); 86 } 87 void initDataBase(){ 88 dbhelper = new MySQLiteOpenHelper(this,DB,null,1); 89 writer = dbhelper.getWritableDatabase(); 90 reader = dbhelper.getReadableDatabase(); 91 createTable(); 92 refreshView(); 93 } 94 void initList(){ 95 list = (ListView) findViewById(R.id.sqlite_list); 96 list.setOnItemLongClickListener(itemLongListener);; 97 adapter = new SimpleCursorAdapter(this, 98 R.layout.list_cell, cur, 99 new String[] { "_id","name","gender" }, new int[] {R.id.tv_id,R.id.tv_cell_name,R.id.tv_cell_gender }); 100 list.setAdapter(adapter); 101 findViewById(R.id.btnAddUser).setOnClickListener(btnListener); 102 } 103 104 @Override 105 protected void onCreate(Bundle savedInstanceState) { 106 super.onCreate(savedInstanceState); 107 setContentView(R.layout.activity_list_sqlite); 108 initList(); 109 initDataBase(); 110 } 111 }