SQLite实例——dummynote.java

先附上源代码。代码不断更新中,主要实现一个记事本的功能,涉及SQLite的CRUD操作。

dummynote.java

package com.example.dummynote;

import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.Menu;
import android.view.MenuItem;
import android.R.bool;
import android.app.ListActivity;
import android.database.Cursor;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;

public class DummyNote extends ListActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		getListView().setEmptyView(findViewById(R.id.empty));//设置列表为空时的显示内容为 empty文本框
		setAdapter();
	}

	private String[] note_array={
		/*"hangsome",
		"lushichuanshuo",
		"android",
		"library"*/
	};
	private NotesDbAdapter mDbHelper ;
	private Cursor mNoteCursor;

	private void setAdapter(){
		mDbHelper = new NotesDbAdapter(this);
		mDbHelper.open();
		fillData();
	}

	private void fillData(){
		mNoteCursor = mDbHelper.getall();
		startManagingCursor(mNoteCursor);

		String[] from = new String[]{NotesDbAdapter.NOTE};
		int[] to = new int[]{android.R.id.text1};//android.R.id.text1是Android 框架里面的TextView的一个标识符

		//Now create a simple cursor adapter
		SimpleCursorAdapter adapter =
				new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, mNoteCursor, from, to);
		setListAdapter(adapter);
		}

	//Add a entity
	private int mNoteNumber = 1;
	protected static final int MENU_INSERT = Menu.FIRST;

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		 super.onCreateOptionsMenu(menu);
		 menu.add(0,MENU_INSERT, 0, "新增记事");
		return super.onCreateOptionsMenu(menu);
	}
	public boolean onOptionsItemSelected(MenuItem item){
		switch(item.getItemId()){
		case MENU_INSERT:
			String noteName = "Note "+ mNoteNumber++;
			mDbHelper.create(noteName);
			fillData();
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

}<p>
</p>
NotesDbAdapter.java<pre name="code" class="java">package com.example.dummynote;

import java.util.Date;

import android.content.ContentValues;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.*;
import android.util.Log;
public class NotesDbAdapter {
	private static final String TAG = "notes";

	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 =
			"create table notes("
			+"_id INTEGER PRIMARY KEY,"
			+"note TEXT NOT NULL,"
			+"created 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
			try {
				db.execSQL(DATABASE_CREATE);
				Log.d(TAG, "onCreate !");
			} catch (Exception e) {
				Log.d(TAG, e.toString());
			}
		}

		@Override//更新数据表
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

			try {
				// TODO Auto-generated method stub
				db.execSQL("DROP TABLE IF EXISTS "+DATABASE_TABLE);
				onCreate(db);
				Log.d(TAG, "inUpgrade!");
			} catch (Exception e) {
				Log.d(TAG, "onUpgrade failure!");
			}
		}
}

	private Context mCtx = null;	 //抽象界面
	private DatabaseHelper dbHelper; //数据库工具类
	private SQLiteDatabase db;		 //数据库类
	/** COnstructor**/
	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();
	}

	public static final String  ROWID = "_id";
	public static final String  NOTE = "note";
	public static final String  CREATED = "created";

	String[] strCols = new String[]{
			ROWID,
			NOTE,
			CREATED
	};
	//检索。返回的是指针。少内存
	public Cursor getall() {
		return db.query(DATABASE_TABLE,//Which table to select
					strCols,//Which columns to return
					null,   //Where clause
					null,   //Where arguments
					null,   //Group By clause
					null,   //Having clause
					null    //Order-by clause
					);
	}

	//增加
	public long create(String Note){
		Date now = new Date();
		ContentValues args = new ContentValues();
		args.put(NOTE, Note);
		args.put(CREATED, now.getDate());

		return db.insert(DATABASE_TABLE, null, args);
	}
}
				
时间: 2024-12-16 02:58:05

SQLite实例——dummynote.java的相关文章

使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法

Java提供了Class类,可以通过编程方式获取类别的字段和方法,包括构造方法 获取Class类实例的方法: 类名.class 实例名.getClass() Class.forName(className) public class RefTest { @Test public void testRef(){ //Class cls = RefTest.class; //Class.forName("com.jboa.service.RefTest"); //new RefTest()

实例分析Java Class的文件结构

实例分析Java Class的文件结构 博客分类: Java SE 今天把之前在Evernote中的笔记重新整理了一下,发上来供对java class 文件结构的有兴趣的同学参考一下. 学习Java的朋友应该都知道Java从刚开始的时候就打着平台无关性的旗号,说“一次编写,到处运行”,其实说到无关性,Java平台还有另外一个无关性那就是语言无关性,要实现语言无关性,那么Java体系中的class的文件结构或者说是字节码就显得相当重要了,其实Java从刚开始的时候就有两套规范,一个是Java语言规

实例介绍 Java(android) 回调函数使用方法

在Android开发中经常用到回调机制,其中最典型的就是控件被触发的实现方式,简单而言,如Button被Click后,是系统调用了OnClick方法,而我们为Button注册了OnClickListener监听器,当被触发Click后,OnClickListener中的OnClick方法就会被回调,我们就能在其中执行相应操作了. 下面举一个简单的例子介绍回调的实现方式: 回调函数使用的简单例子 程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序.程序员B要让a调用自己的程序

[转]实例分析Java Class的文件结构

学习Java的朋友应该都知道Java从刚开始的时候就打着平台无关性的旗号,说“一次编写,到处运行”,其实说到无关性,Java平台还有另外一个无关 性那就是语言无关性,要实现语言无关性,那么Java体系中的class的文件结构或者说是字节码就显得相当重要了,其实Java从刚开始的时候就有两套 规范,一个是Java语言规范,另外一个是Java虚拟机规范,Java语言规范只是规定了Java语言相关的约束以及规则,而虚拟机规范则才是真正从跨 平台的角度去设计的.今天我们就以一个实际的例子来看看,到底Ja

sqlite数据库在java中的使用

/** * */ package com.nyist.sqlitedemo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * @author yuchao * * @school 南阳理工软件学院移动设备应用与开发 * * @date 2014年6月

thrift系列 - 多语言实例 for java和python

1.简述 本文主要介绍thrift多语言.跨语言的代码实例.Thrift对多语言的支持非常不错,定义一个thrift接口文件,通过thrift IDL compiler(代码生成引擎)生成各个语言的代码,将各自语言的代码放入各自语言的工程中,写好服务端和客户端程序,通信的问题即刻解决. 2.简单架构图 示例的thrift接口文件,test8.thrift: service TestService { string test(1: i32 num,2: string name) } 代码生成方法,

第一次写博客,一个简单的实例:java读写txt文件,希望这是一个好的开始。

作为一名初级开发人员,每天都是在网络上寻找别人的代码,然后修修改改应用到项目中,不知不觉间,自己真的成为代码的搬运工了. 编程的乐趣是在浩瀚的知识海洋中找到自己想要的代码,共享信息,方便自己,也方便别人. 下面的代码是一个简单的java代码读取txt文件的实例.虽然简单,但是可以为零基础的新手一个入门例子. package javatest; import java.io.BufferedReader;import java.io.File;import java.io.FileInputStr

三个实例演示 Java Thread Dump 日志分析

jstack Dump 日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注)  执行中,Runnable 等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiting on monitor entry(重点关注) 暂停,Suspended 对象等待中,Object.wait() 或 TIMED_WAITING 阻塞,Blocked(重点关注)   停止,Parked 下面我们先从第一个例子开始分析,然后再列出不同线程

三个实例演示 Java Thread Dump 日志分析(转)

原文链接:http://www.cnblogs.com/zhengyun_ustc/archive/2013/01/06/dumpanalysis.html 转来当笔记^_^ jstack Dump 日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注)  执行中,Runnable 等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiting on monitor entry(重点关注) 暂停,Suspended 对象