01.Android数据库笔记

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


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.数据库中键值对插入行,修改行;

package com.example.helper;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DbHelper extends SQLiteOpenHelper {
	private static final String table="course";
	private static final String DbName= "Mycourse";

	public DbHelper(Context context) {
		super(context,DbName, null, 1);
		// TODO Auto-generated constructor stub
		
	}
	
	public Cursor select(int weekday)
	{
		SQLiteDatabase db=this.getReadableDatabase();
		int value[]={1,2,3,4,5,6,7,8};
		String tochar[] = {"1","2","3","4","5","6","7","8"};
		//for (int i=0;i<8;i++) value[i]+=weekday*8;
		//for (int i=0;i<8;i++) tochar[i]=Integer.toString(value[i]);
		//String[] wherevalue={tochar[0],tochar[1],tochar[2],tochar[3],tochar[4],tochar[5],tochar[6],tochar[7]};
		String[] wherevalue={"12","0"};
		Cursor cursor=db.query("course", null,"_id<? and _id>?",wherevalue, null, null,null);
		return cursor;

	}
	
	public long insert(CourseData data)
	{
		SQLiteDatabase db=this.getReadableDatabase();
		ContentValues cv=new ContentValues();
		cv.put("name",data.getName());
		cv.put("time",data.getTime());
		long rowid=db.insert(table, null, cv);
		return rowid;
		
	}
	
	public void delete(CourseData data,int id)
	{
		SQLiteDatabase db=this.getReadableDatabase();
		String where="_id=?";
		String[] wherevalue={Integer.toString(id)};
		db.delete(table, where, wherevalue);
		
	}
	
	public void upgrade(CourseData data,int id)
	{
		SQLiteDatabase db=this.getReadableDatabase();
		ContentValues cv=new ContentValues();
		String where="_id=?";
		String[] wherevalue={Integer.toString(id)};
		cv.put("name",data.getName());
		cv.put("time",data.getTime());
		db.update(table,cv, where, wherevalue);
		
	}
	
	public void initial()
	{
		SQLiteDatabase db=this.getReadableDatabase();
		CourseData emptydata=new CourseData();
		for(int i=0;i<10;i++) 
			{
		     emptydata.setName(String.valueOf(i));
		     emptydata.setTime(i);
		     insert(emptydata);
			}
	}
	
	
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		db.execSQL("create table course(_id integer primary key autoincrement,name varchar[20],time integer);");
	}

	@Override
	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
		// TODO Auto-generated method stub
		
	}

}

 
        Activity类:package com.example.sqlite;

    注意:

    1.ListView 通过invalidateViews重画

    2.抛出异常

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteCursor;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

import com.example.helper.CourseData;
import com.example.helper.DbHelper;

public class MainActivity extends Activity {
	private static final String TAG = "MainActivity";
	private Button bn1;
	private Button bn2;
	private Button bn3;
	private ListView lv;
	private Cursor cursor;
	private SimpleCursorAdapter scAdapter;
	private DbHelper myDbHelper;
	private int _id;
	private EditText et1,et2;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv=(ListView)findViewById(R.id.lv);
        
        myDbHelper=new DbHelper(this);
        myDbHelper.initial();
        cursor=myDbHelper.select(0);
        bn1=(Button)findViewById(R.id.bn1);
        bn2=(Button)findViewById(R.id.bn2);
        bn3=(Button)findViewById(R.id.bn3);
        et1=(EditText)findViewById(R.id.etname);
        et2=(EditText)findViewById(R.id.ettime);
        
        
        
        scAdapter=new SimpleCursorAdapter
        		(this, R.layout.listview, cursor, new String[]{"name","time"}, new int[]{R.id.CourseName,R.id.CourseTime});
        
        lv.setAdapter(scAdapter);
        Log.i(TAG, "Adapter OK");
        
        lv.setOnItemClickListener(new OnItemClickListener() {

		public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				// TODO Auto-generated method stub
				Log.i(TAG, "CLICK1");
				cursor.moveToPosition(arg2);
				Log.i(TAG, "CLICK2");
				_id=cursor.getInt(0);
				Log.i(TAG, "CLICK3");
				et1.setText(cursor.getString(1));
				Log.i(TAG, "CLICK4");
				et2.setText(String.valueOf(cursor.getInt(2)));
				Log.i(TAG, cursor.getString(0));
			}
		});
        
        lv.setOnItemSelectedListener(new OnItemSelectedListener() {

			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				// TODO Auto-generated method stub
				SQLiteCursor sc=(SQLiteCursor)arg0.getSelectedItem();
				_id=sc.getInt(0);
				et1.setText(cursor.getString(1));
				et2.setText(String.valueOf(cursor.getInt(2)));
				Log.i(TAG, sc.getString(0));
				
			}

			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
				
				
			}
		});
        
        bn1.setOnClickListener(new OnClickListener() {
			
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Log.i(TAG, "BN1 OK");
				String name;
				int time;
			try
			{
			name=et1.getText().toString();
	        time=Integer.parseInt(et2.getText().toString());
			}
			catch (Exception e)
			{
				return;
			}
           
			Log.i(TAG, "ADD?");
			add(name, time);
			Log.i(TAG, "BN1 FINISH");
			}
		});
        
        bn2.setOnClickListener(new OnClickListener() {
        	
        	
			public void onClick(View arg0) {
				Log.i(TAG, "BN2 OK");
				// TODO Auto-generated method stub
				String name;
				int time;
			try
			{
			name=et1.getText().toString();
	        time=Integer.parseInt(et2.getText().toString());
			}
			catch (Exception e)
			{
				return;
			}
            edit(name, time);
            Log.i(TAG, "BN2 FINISH");
			}
		});
        
        bn3.setOnClickListener(new OnClickListener() {
			
			public void onClick(View arg0) {
				Log.i(TAG, "BN3 OK");
				// TODO Auto-generated method stub
				String name;
				int time;
			try
			{
			name=et1.getText().toString();
	        time=Integer.parseInt(et2.getText().toString());
			}
			catch (Exception e)
			{
				return;
			}
			delete(name, time);
			Log.i(TAG, "BN3 FINISH");
			}
		});
    }
    
    
    private void add(String name,int time)
    {
    	if (name=="") return;
    	CourseData data=new CourseData();
    	data.setName(name);
    	data.setTime(time);
    	myDbHelper.insert(data);
    	cursor.requery();
    	lv.invalidateViews();
    	et1.setText("");
    	et2.setText("");
    	_id=0;
    	
    }
    
    private void edit(String name,int time)
    {
    	if (name=="") return;
    	CourseData data=new CourseData();
    	data.setName(name);
    	data.setTime(time);
    	myDbHelper.upgrade(data,_id);
    	cursor.requery();
    	lv.invalidateViews();
    	et1.setText("");
    	et2.setText("");
    	_id=0;
    	
    }
    
    private void delete(String name,int time)
    {
    	if (name=="") return;
    	CourseData data=new CourseData();
    	data.setName(name);
    	data.setTime(time);
    	myDbHelper.delete(data,_id);
    	cursor.requery();
    	lv.invalidateViews();
    	et1.setText("");
    	et2.setText("");
    	_id=0;
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
        
    }

 最终运行效果如下:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值