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 }

 

相关文章: