1.Android数据库笔记

来源:互联网 发布:python微信抢红包 编辑:程序博客网 时间:2024/05/22 13:00

本人愚钝,想写一个大学课程表,之前在数据库方面各种不懂,近来再仔细观摩例程,竟然有些小小收获,特以学习笔记形式记录,方便日后复习,兼作备份代码之用,程序不合理之处敬请拍砖,


DbHelper 继承 SQLiteOpenHelper 
注意:
1.SQLiteDatabase.query的用法之一
public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) 
当只查询部分行,通过 String[] columns 参数可选择
亦可通过selection,selectionArgs联合SQlite语句筛选
selection中占位符?要与selectionArgs中一一对应;
2.要掌握数据库,还需深入学习
SQLite

3.数据库中键值对插入行,修改行;

 

  1. package com.example.helper;  
  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.SQLiteOpenHelper;  
  8.   
  9. public class DbHelper extends SQLiteOpenHelper {  
  10.     private static final String table="course";  
  11.     private static final String DbName= "Mycourse";  
  12.   
  13.     public DbHelper(Context context) {  
  14.         super(context,DbName, null1);  
  15.         // TODO Auto-generated constructor stub  
  16.           
  17.     }  
  18.       
  19.     public Cursor select(int weekday)  
  20.     {  
  21.         SQLiteDatabase db=this.getReadableDatabase();  
  22.         int value[]={1,2,3,4,5,6,7,8};  
  23.         String tochar[] = {"1","2","3","4","5","6","7","8"};  
  24.         //for (int i=0;i<8;i++) value[i]+=weekday*8;  
  25.         //for (int i=0;i<8;i++) tochar[i]=Integer.toString(value[i]);  
  26.         //String[] wherevalue={tochar[0],tochar[1],tochar[2],tochar[3],tochar[4],tochar[5],tochar[6],tochar[7]};  
  27.         String[] wherevalue={"12","0"};  
  28.         Cursor cursor=db.query("course"null,"_id<? and _id>?",wherevalue, nullnull,null);  
  29.         return cursor;  
  30.   
  31.     }  
  32.       
  33.     public long insert(CourseData data)  
  34.     {  
  35.         SQLiteDatabase db=this.getReadableDatabase();  
  36.         ContentValues cv=new ContentValues();  
  37.         cv.put("name",data.getName());  
  38.         cv.put("time",data.getTime());  
  39.         long rowid=db.insert(table, null, cv);  
  40.         return rowid;  
  41.           
  42.     }  
  43.       
  44.     public void delete(CourseData data,int id)  
  45.     {  
  46.         SQLiteDatabase db=this.getReadableDatabase();  
  47.         String where="_id=?";  
  48.         String[] wherevalue={Integer.toString(id)};  
  49.         db.delete(table, where, wherevalue);  
  50.           
  51.     }  
  52.       
  53.     public void upgrade(CourseData data,int id)  
  54.     {  
  55.         SQLiteDatabase db=this.getReadableDatabase();  
  56.         ContentValues cv=new ContentValues();  
  57.         String where="_id=?";  
  58.         String[] wherevalue={Integer.toString(id)};  
  59.         cv.put("name",data.getName());  
  60.         cv.put("time",data.getTime());  
  61.         db.update(table,cv, where, wherevalue);  
  62.           
  63.     }  
  64.       
  65.     public void initial()  
  66.     {  
  67.         SQLiteDatabase db=this.getReadableDatabase();  
  68.         CourseData emptydata=new CourseData();  
  69.         for(int i=0;i<10;i++)   
  70.             {  
  71.              emptydata.setName(String.valueOf(i));  
  72.              emptydata.setTime(i);  
  73.              insert(emptydata);  
  74.             }  
  75.     }  
  76.       
  77.       
  78.     @Override  
  79.     public void onCreate(SQLiteDatabase db) {  
  80.         // TODO Auto-generated method stub  
  81.         db.execSQL("create table course(_id integer primary key autoincrement,name varchar[20],time integer);");  
  82.     }  
  83.   
  84.     @Override  
  85.     public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {  
  86.         // TODO Auto-generated method stub  
  87.           
  88.     }  
  89.   
  90. }  

 

Activity类:

    注意:

    1.ListView 通过invalidateViews重画(貌似必须在主线程里)

    2.抛出异常

 

 

  1. import android.app.Activity;  
  2. import android.database.Cursor;  
  3. import android.database.sqlite.SQLiteCursor;  
  4. import android.os.Bundle;  
  5. import android.util.Log;  
  6. import android.view.Menu;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.widget.AdapterView;  
  10. import android.widget.AdapterView.OnItemClickListener;  
  11. import android.widget.AdapterView.OnItemSelectedListener;  
  12. import android.widget.Button;  
  13. import android.widget.EditText;  
  14. import android.widget.ListView;  
  15. import android.widget.SimpleCursorAdapter;  
  16.   
  17. import com.example.helper.CourseData;  
  18. import com.example.helper.DbHelper;  
  19.   
  20. public class MainActivity extends Activity {  
  21.     private static final String TAG = "MainActivity";  
  22.     private Button bn1;  
  23.     private Button bn2;  
  24.     private Button bn3;  
  25.     private ListView lv;  
  26.     private Cursor cursor;  
  27.     private SimpleCursorAdapter scAdapter;  
  28.     private DbHelper myDbHelper;  
  29.     private int _id;  
  30.     private EditText et1,et2;  
  31.       
  32.     @Override  
  33.     public void onCreate(Bundle savedInstanceState) {  
  34.         super.onCreate(savedInstanceState);  
  35.         setContentView(R.layout.activity_main);  
  36.         lv=(ListView)findViewById(R.id.lv);  
  37.           
  38.         myDbHelper=new DbHelper(this);  
  39.         myDbHelper.initial();  
  40.         cursor=myDbHelper.select(0);  
  41.         bn1=(Button)findViewById(R.id.bn1);  
  42.         bn2=(Button)findViewById(R.id.bn2);  
  43.         bn3=(Button)findViewById(R.id.bn3);  
  44.         et1=(EditText)findViewById(R.id.etname);  
  45.         et2=(EditText)findViewById(R.id.ettime);  
  46.           
  47.           
  48.           
  49.         scAdapter=new SimpleCursorAdapter  
  50.                 (this, R.layout.listview, cursor, new String[]{"name","time"}, new int[]{R.id.CourseName,R.id.CourseTime});  
  51.           
  52.         lv.setAdapter(scAdapter);  
  53.         Log.i(TAG, "Adapter OK");  
  54.           
  55.         lv.setOnItemClickListener(new OnItemClickListener() {  
  56.   
  57.         public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,  
  58.                     long arg3) {  
  59.                 // TODO Auto-generated method stub  
  60.                 Log.i(TAG, "CLICK1");  
  61.                 cursor.moveToPosition(arg2);  
  62.                 Log.i(TAG, "CLICK2");  
  63.                 _id=cursor.getInt(0);  
  64.                 Log.i(TAG, "CLICK3");  
  65.                 et1.setText(cursor.getString(1));  
  66.                 Log.i(TAG, "CLICK4");  
  67.                 et2.setText(String.valueOf(cursor.getInt(2)));  
  68.                 Log.i(TAG, cursor.getString(0));  
  69.             }  
  70.         });  
  71.           
  72.         lv.setOnItemSelectedListener(new OnItemSelectedListener() {  
  73.   
  74.             public void onItemSelected(AdapterView<?> arg0, View arg1,  
  75.                     int arg2, long arg3) {  
  76.                 // TODO Auto-generated method stub  
  77.                 SQLiteCursor sc=(SQLiteCursor)arg0.getSelectedItem();  
  78.                 _id=sc.getInt(0);  
  79.                 et1.setText(cursor.getString(1));  
  80.                 et2.setText(String.valueOf(cursor.getInt(2)));  
  81.                 Log.i(TAG, sc.getString(0));  
  82.                   
  83.             }  
  84.   
  85.             public void onNothingSelected(AdapterView<?> arg0) {  
  86.                 // TODO Auto-generated method stub  
  87.                   
  88.                   
  89.             }  
  90.         });  
  91.           
  92.         bn1.setOnClickListener(new OnClickListener() {  
  93.               
  94.             public void onClick(View arg0) {  
  95.                 // TODO Auto-generated method stub  
  96.                 Log.i(TAG, "BN1 OK");  
  97.                 String name;  
  98.                 int time;  
  99.             try  
  100.             {  
  101.             name=et1.getText().toString();  
  102.             time=Integer.parseInt(et2.getText().toString());  
  103.             }  
  104.             catch (Exception e)  
  105.             {  
  106.                 return;  
  107.             }  
  108.              
  109.             Log.i(TAG, "ADD?");  
  110.             add(name, time);  
  111.             Log.i(TAG, "BN1 FINISH");  
  112.             }  
  113.         });  
  114.           
  115.         bn2.setOnClickListener(new OnClickListener() {  
  116.               
  117.               
  118.             public void onClick(View arg0) {  
  119.                 Log.i(TAG, "BN2 OK");  
  120.                 // TODO Auto-generated method stub  
  121.                 String name;  
  122.                 int time;  
  123.             try  
  124.             {  
  125.             name=et1.getText().toString();  
  126.             time=Integer.parseInt(et2.getText().toString());  
  127.             }  
  128.             catch (Exception e)  
  129.             {  
  130.                 return;  
  131.             }  
  132.             edit(name, time);  
  133.             Log.i(TAG, "BN2 FINISH");  
  134.             }  
  135.         });  
  136.           
  137.         bn3.setOnClickListener(new OnClickListener() {  
  138.               
  139.             public void onClick(View arg0) {  
  140.                 Log.i(TAG, "BN3 OK");  
  141.                 // TODO Auto-generated method stub  
  142.                 String name;  
  143.                 int time;  
  144.             try  
  145.             {  
  146.             name=et1.getText().toString();  
  147.             time=Integer.parseInt(et2.getText().toString());  
  148.             }  
  149.             catch (Exception e)  
  150.             {  
  151.                 return;  
  152.             }  
  153.             delete(name, time);  
  154.             Log.i(TAG, "BN3 FINISH");  
  155.             }  
  156.         });  
  157.     }  
  158.       
  159.       
  160.     private void add(String name,int time)  
  161.     {  
  162.         if (name==""return;  
  163.         CourseData data=new CourseData();  
  164.         data.setName(name);  
  165.         data.setTime(time);  
  166.         myDbHelper.insert(data);  
  167.         cursor.requery();  
  168.         lv.invalidateViews();  
  169.         et1.setText("");  
  170.         et2.setText("");  
  171.         _id=0;  
  172.           
  173.     }  
  174.       
  175.     private void edit(String name,int time)  
  176.     {  
  177.         if (name==""return;  
  178.         CourseData data=new CourseData();  
  179.         data.setName(name);  
  180.         data.setTime(time);  
  181.         myDbHelper.upgrade(data,_id);  
  182.         cursor.requery();  
  183.         lv.invalidateViews();  
  184.         et1.setText("");  
  185.         et2.setText("");  
  186.         _id=0;  
  187.           
  188.     }  
  189.       
  190.     private void delete(String name,int time)  
  191.     {  
  192.         if (name==""return;  
  193.         CourseData data=new CourseData();  
  194.         data.setName(name);  
  195.         data.setTime(time);  
  196.         myDbHelper.delete(data,_id);  
  197.         cursor.requery();  
  198.         lv.invalidateViews();  
  199.         et1.setText("");  
  200.         et2.setText("");  
  201.         _id=0;  
  202.     }  
  203.       
  204.     @Override  
  205.     public boolean onCreateOptionsMenu(Menu menu) {  
  206.         getMenuInflater().inflate(R.menu.activity_main, menu);  
  207.         return true;  
  208.           
  209.     }  

 

 最终运行效果如下: