Android开发—数据库应用—访问数据表(SQLite OpenHelper) —查询单条记录、修改

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:数据库应用—查询单条记录、修改

* 作 者: 雷恒鑫
* 完成日期: 2012 年 08 月 14 日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:

* 程序头部的注释结束

*/

 

在“NotesDbAdapter”类中“查询单条记录”与“修改”的程序代码写好,程序如下:

  //query single entry
    public Cursor get(long rowId) throws SQLException {
        Cursor mCursor = db.query(true,
                DATABASE_TABLE,
                new String[] {KEY_ROWID, KEY_NOTE, KEY_CREATED},
                KEY_ROWID + "=" + rowId,
                null, null, null, null, null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }

    //update
    public boolean update(long rowId, String note) {
        ContentValues args = new ContentValues();
        args.put(KEY_NOTE, note);

        return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
    }


 

完整的“NotesDbAdapter.java”程序如下:

 

package com.demo.android.dummynote;

import java.sql.Date;

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

public class NotesDbAdapter {
	private static final String DATABASE_NAME = "notes.db";
	private static final int DATABASE_VERSION = 1;
	private static final String DATABASE_TABLE = "notes";
	private static final String DATABASE_CREATE = "creat table notes("
			+ "_id INTEGER PRIMARY KEY," + "note TEXT," + "created INTEGER,"
			+ "modified INTEGER" + ");";

	private static class DatabaseHelper extends SQLiteOpenHelper {
		public DatabaseHelper(Context context) {
			super(context, DATABASE_NAME, null, DATABASE_VERSION);
			// TODO Auto-generated constructor stub
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			// TODO Auto-generated method stub
			db.execSQL(DATABASE_CREATE);

		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
			// TODO Auto-generated method stub
			db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
			onCreate(db);
		}
	}

	private Context mCtx = null;
	private DatabaseHelper dbHelper;
	private SQLiteDatabase db;

	public NotesDbAdapter(Context ctx) {
		this.mCtx = ctx;
	}

	public NotesDbAdapter open() throws SQLException {
		dbHelper = new DatabaseHelper(mCtx);
		db = dbHelper.getWritableDatabase();
		return this;
	}

	public void close() {
		dbHelper.close();
	}

	private static final String KEY_ROWID = "_id";
	static final String KEY_NOTE = "note";
	private static final String KEY_CREATED = "created";
	
	// get all entries
	public Cursor getall() {
		return db.query(DATABASE_TABLE, //Which table to Select
				new String[]{KEY_ROWID,	KEY_NOTE,KEY_CREATED}, //Which columns to return
				null, //WHERE clause
				null, //WHERE arguments
				null, //GROUP BY clause
				null, //HAVING clause
				null);//Order-by clause

	}
	
    // add an entry
    public long create(String Note) {
        Date now = new Date();
        ContentValues args = new ContentValues();
        args.put(KEY_NOTE, Note);
        args.put(KEY_CREATED, now.getTime());

        return db.insert(DATABASE_TABLE, null, args);
    }

	//remove an entry
	public boolean delete(long rowID){
		return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowID,null)>0;
	}
	
	   //query single entry
    public Cursor get(long rowId) throws SQLException {
        Cursor mCursor = db.query(true,
                DATABASE_TABLE,
                new String[] {KEY_ROWID, KEY_NOTE, KEY_CREATED},
                KEY_ROWID + "=" + rowId,
                null, null, null, null, null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }

    //update
    public boolean update(long rowId, String note) {
        ContentValues args = new ContentValues();
        args.put(KEY_NOTE, note);

        return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
    }


}

 

注意,以上程序 Date now = new Date();有一点小小的错误,编译器提示如下:

构造函数 Date()未定义;

 

Android开发—数据库应用—访问数据表(SQLite OpenHelper) —查询单条记录、修改_第1张图片

 

但是书上Date now = new Date()括号里面却没有参数,大家如果知道是怎么回事,在评论上告诉我一声哈。

 

顺便把“DummyNote”程序写一下:

package com.demo.android.dummynote;

import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.SimpleCursorAdapter;
import android.content.Intent;
import android.widget.ListView;
///////////////////////////////////////////////////////
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;


/////////////////////////////////////////////////////

public class DummyNote extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //Tell the list view which view to display when the list is empty
        getListView().setEmptyView(findViewById(R.id.empty));
        setAdapter();
    }
    private String[] note_array = {
    		"gasolin",
    		"crota",
    		"louk",
    		"magicion"
    }; 
    private NotesDbAdapter mDbHelper;
    private Cursor mNotesCursor;
    private void setAdapter(){
    	mDbHelper = new NotesDbAdapter(this);
    	mDbHelper.open();
    	fillData();
    }
    private void fillData(){
    	mNotesCursor = mDbHelper.getall();
    	startManagingCursor(mNotesCursor);
    	
    	//Create an array to specify the field we want to display in the list
    	String[] from = new String[]{NotesDbAdapter.KEY_NOTE};
    	
    	//an array of the fields we want to bind those fields to
    	int[] to = new int[]{android.R.id.text1};
    	
    	//Now create a simple cursor adapter
    	SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
    			android.R.layout.simple_list_item_1,mNotesCursor,from,to);
    	setListAdapter(adapter);
    }
    
    private int mNoteNumber = 1;
    protected static final int MENU_INSERT = Menu.FIRST;
    protected static final int MENU_DELETE = Menu.FIRST+1;
    protected static final int MENU_MODIFY = Menu.FIRST+1;
    
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// TODO Auto-generated method stub
		super.onCreateOptionsMenu(menu);
		menu.add(0, MENU_INSERT, 0, "新增记事");
		menu.add(0, MENU_DELETE, 0,  "删除记事");
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		switch(item.getItemId()) {
        	case MENU_INSERT:
        		String noteName = "Note " + mNoteNumber++;
        		mDbHelper.create(noteName);
        		fillData();
        		return true;
        	case MENU_DELETE:
                mDbHelper.delete(getListView().getSelectedItemId());
                fillData();
                return true;
		}
		return super.onOptionsItemSelected(item);
	}

}


 

大家如果知道问题的解决思路别忘了告诉我一声哈。

你可能感兴趣的:(android,数据库,sqlite,String,null,database)