数据存储与访问

1.布局



<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="姓名:" /> <EditText android:id="@+id/edit_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" > <requestFocus /> </EditText> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="性别:" /> <EditText android:id="@+id/edit_sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="部门:" /> <EditText android:id="@+id/edit_department" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" > <requestFocus /> </EditText> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="工资:" /> <EditText android:id="@+id/edit_salary" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <Button android:id="@+id/btn_insert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="添加" /> <Button android:id="@+id/btn_clear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="清除" /> <Button android:id="@+id/btn_showall" android:layout_width="100dp" android:layout_height="wrap_content" android:text="显示全部" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" ID: " /> <EditText android:id="@+id/secachID" android:layout_width="79dp" android:layout_height="wrap_content" android:ems="10" /> <Button android:id="@+id/btn_search" android:layout_width="100dp" android:layout_height="wrap_content" android:text="显示" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/text_show" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </LinearLayout> <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/display" android:text="" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> </LinearLayout> </ScrollView> </LinearLayout>

  

2.src中的People类

 1 package com.example.sqltest;
 2 
 3 public class People {
 4     public int  ID = -1; 
 5     public String Name ;
 6     public String  Sex;
 7     public String Department;
 8     public float  Salary;
 9     @Override
10     public String toString( ){
11         String result = "";
12         result += "ID: " + this.ID + "," ;
13         result += "姓名:" + this.Name + ",";
14         result += "性别:" + this.Sex + ",";
15         result += "部门:" + this.Department + "," ;
16         result += "薪水:" + this.Salary + "," ;
17         return result;
18 }
19 
20 }

3.DBAdapter.java

  1 package com.example.sqltest;
  2 
  3 import android.content.ContentValues;
  4 import android.content.Context;
  5 import android.database.Cursor;
  6 import android.database.sqlite.SQLiteDatabase;
  7 import android.database.sqlite.SQLiteDatabase.CursorFactory;
  8 import android.database.sqlite.SQLiteException;
  9 import android.database.sqlite.SQLiteOpenHelper;
 10 
 11 
 12 
 13 public class DBAdapter {
 14     private static final String DB_NAME = "test.db";
 15     private static final String DB_TABLE = "peopleinfo";
 16     private static final int DB_VERSION = 1;
 17 
 18     public static final String KEY_ID = "id";
 19     public static final String KEY_NAME = "name";
 20     public static final String KEY_SEX = "sex";
 21     public static final String KEY_DEPARTMENT = "department";
 22     public static final String KEY_SALARY = "salary";
 23 
 24     private SQLiteDatabase db;
 25     private final Context context;
 26     private DBOpenHelper dbOpenHelper;
 27 
 28     public DBAdapter(Context _context) {
 29         context = _context;
 30     }
 31     public void close() {
 32         if (db != null) {
 33             db.close();
 34             db = null;
 35         }
 36     }
 37     public void open() throws SQLiteException {
 38         dbOpenHelper = new DBOpenHelper(context, DB_NAME, null, DB_VERSION);
 39         try {
 40             db = dbOpenHelper.getWritableDatabase();
 41         } catch (SQLiteException ex) {
 42             db = dbOpenHelper.getReadableDatabase();
 43         }
 44     }
 45     public long insert(People people) {
 46         ContentValues newValues = new ContentValues();
 47 
 48         newValues.put(KEY_NAME, people.Name);
 49         newValues.put(KEY_SEX, people.Sex);
 50         newValues.put(KEY_DEPARTMENT, people.Department);
 51         newValues.put(KEY_SALARY, people.Salary);
 52         return db.insert(DB_TABLE, null, newValues);
 53     }
 54     public People[] queryAllData() {
 55         Cursor results = db.query(DB_TABLE, new String[] { KEY_ID, KEY_NAME,
 56                 KEY_SEX,KEY_DEPARTMENT,KEY_SALARY }, null, null, null, null, null);
 57         return ConvertToPeople(results);
 58     }
 59     public People[] queryOneData(long id) {
 60         Cursor results = db.query(DB_TABLE, new String[] { KEY_ID, KEY_NAME,
 61                 KEY_SEX,KEY_DEPARTMENT,KEY_SALARY }, KEY_ID + "=" + id, null, null, null,
 62                 null);
 63         return ConvertToPeople(results);
 64     }
 65     private People[] ConvertToPeople(Cursor cursor) {
 66         int resultCounts = cursor.getCount();
 67         if (resultCounts == 0 || !cursor.moveToFirst()) {
 68             return null;
 69         }
 70         People[] peoples = new People[resultCounts];
 71         for (int i = 0; i < resultCounts; i++) {
 72             peoples[i] = new People();
 73             peoples[i].ID = cursor.getInt(0);
 74             peoples[i].Name = cursor.getString(cursor.getColumnIndex(KEY_NAME));
 75             peoples[i].Sex = cursor.getString(cursor.getColumnIndex(KEY_SEX));
 76             peoples[i].Department = cursor.getString(cursor.getColumnIndex(KEY_DEPARTMENT));
 77             peoples[i].Salary = cursor.getFloat(cursor.getColumnIndex(KEY_SALARY));
 78             cursor.moveToNext();
 79         }
 80         return peoples;
 81     }
 82       public long deleteAllData() {
 83           return db.delete(DB_TABLE, null, null);
 84       }
 85 
 86       public long deleteOneData(long id) {
 87           return db.delete(DB_TABLE,  KEY_ID + "=" + id, null);
 88       }
 89       public long updateOneData(long id , People people){
 90           ContentValues updateValues = new ContentValues();      
 91           updateValues.put(KEY_NAME, people.Name);
 92           updateValues.put(KEY_SEX,people.Sex);
 93           updateValues.put(KEY_DEPARTMENT, people.Department);
 94           updateValues.put(KEY_SALARY, people.Salary);
 95           
 96           return db.update(DB_TABLE, updateValues,  KEY_ID + "=" + id, null);
 97       }
 98     private static class DBOpenHelper extends SQLiteOpenHelper {
 99 
100         public DBOpenHelper(Context context, String name,
101                 CursorFactory factory, int version) {
102             super(context, name, factory, version);
103         } // 构造方法
104 
105         private static final String DB_CREATE = "create table " + DB_TABLE
106                 + " (" + KEY_ID + " integer primary key autoincrement, "
107                 + KEY_NAME + " text not null," + KEY_SEX + " text," + KEY_DEPARTMENT
108                 + " text," + KEY_SALARY + " float);";
109 
110         @Override
111         public void onCreate(SQLiteDatabase _db) {
112             _db.execSQL(DB_CREATE);
113         }
114 
115         @Override
116         public void onUpgrade(SQLiteDatabase _db, int _oldVersion,
117                 int _newVersion) {
118             _db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE);
119             onCreate(_db);
120         }
121 
122     }
123 }

4.编写MainActivity.java

  1 package com.example.sqltest;
  2 
  3 import android.app.Activity;
  4 import android.os.Bundle;
  5 import android.view.Menu;
  6 import android.view.View;
  7 import android.view.View.OnClickListener;
  8 import android.widget.Button;
  9 import android.widget.EditText;
 10 import android.widget.TextView;
 11 
 12 public class MainActivity extends Activity {
 13     
 14     private EditText name;
 15     private EditText salary;
 16     private EditText department;
 17     private EditText sex;
 18     private EditText secachID;
 19     private Button btn_insert;
 20     private Button btn_clear;
 21     private Button btn_showall;
 22     private Button btn_search;
 23     private TextView text;
 24     private TextView display;
 25     private DBAdapter dbAdepter;
 26 
 27     @Override
 28     protected void onCreate(Bundle savedInstanceState) {
 29         super.onCreate(savedInstanceState);
 30         setContentView(R.layout.activity_main);
 31         
 32         name = (EditText)findViewById(R.id.edit_name);
 33         salary = (EditText)findViewById(R.id.edit_salary);
 34         department = (EditText)findViewById(R.id.edit_department);
 35         sex = (EditText)findViewById(R.id.edit_sex);
 36         secachID = (EditText)findViewById(R.id.secachID);
 37         btn_insert = (Button)findViewById(R.id.btn_insert);
 38         btn_clear = (Button)findViewById(R.id.btn_clear);
 39         btn_showall = (Button)findViewById(R.id.btn_showall);
 40         btn_search = (Button)findViewById(R.id.btn_search);
 41         text = (TextView)findViewById(R.id.text_show);
 42         display = (TextView) findViewById(R.id.display);
 43         
 44         dbAdepter = new DBAdapter(this);
 45         dbAdepter.open();
 46         
 47         btn_insert.setOnClickListener(new OnClickListener() {
 48             
 49             @Override
 50             public void onClick(View v) {
 51                 // TODO Auto-generated method stub
 52                 People people = new People();
 53                 people.Name = name.getText().toString();
 54                 people.Sex = sex.getText().toString();
 55                 people.Department = department.getText().toString();
 56                 people.Salary = Float.parseFloat(salary.getText().toString());
 57                 long colunm = dbAdepter.insert(people);
 58             
 59                 if (colunm == -1 ){
 60                     text.setText("添加过程错误!");
 61                 } else {
 62                     text.setText("成功添加数据,ID:"+String.valueOf(colunm));    
 63                     
 64                 }
 65             }
 66         });
 67         btn_clear.setOnClickListener(new OnClickListener() {
 68             
 69             @Override
 70             public void onClick(View v) {
 71                 // TODO Auto-generated method stub
 72                 display.setText("");
 73             }
 74         });
 75         btn_showall.setOnClickListener(new OnClickListener() {
 76             
 77             @Override
 78             public void onClick(View v) {
 79                 // TODO Auto-generated method stub
 80                 People[] peoples = dbAdepter.queryAllData();
 81                 if (peoples == null){
 82                     text.setText("数据库中没有数据");
 83                     return;
 84                 }
 85                 text.setText("数据库:");
 86                 String msg = "";
 87                 for (int i = 0 ; i<peoples.length; i++){
 88                     msg += peoples[i].toString()+"
";
 89                 }
 90                 display.setText(msg);
 91             }
 92         });
 93         btn_search.setOnClickListener(new OnClickListener() {
 94             
 95             @Override
 96             public void onClick(View v) {
 97                 // TODO Auto-generated method stub
 98                 int id = Integer.parseInt(secachID.getText().toString());
 99                 People[] peoples = dbAdepter.queryOneData(id);
100                 
101                 if (peoples == null){
102                     text.setText("数据库中没有ID为"+String.valueOf(id)+"的数据");
103                     return;
104                 }
105                 text.setText("数据库:");
106                 display.setText(peoples[0].toString());
107             }        
108         });
109         
110     }
111   
112     @Override
113     public boolean onCreateOptionsMenu(Menu menu) {
114         // Inflate the menu; this adds items to the action bar if it is present.
115         getMenuInflater().inflate(R.menu.main, menu);
116         return true;
117     }
118     
119 }

原文地址:https://www.cnblogs.com/anylemons/p/6891916.html