《二》Android 数据库 SQlite SQLiteOpenHelper

/****************************************************

大家都知道写博客会很累的,大热天的。

希望=转载请注明出处:http://blog.csdn.net/ta893115871

请不要可怜你的鼠标,(*^__^*) 嘻嘻……

***************************************************/

源代码已经在资源中共享了吐舌头

http://download.csdn.net/detail/ta893115871/4440305

 

 界面如下所示:

有一个问题:就是为什么Menu的图标设置不上啊,现在用的是4.0.4的SDK版本,以前用的是SDK2.1的可以。

一是我在.xml文件中iem中加了属性 android:icon="@drawable/add"不能显示。

二是我在java文件中setion(R.drawable.add);也不可以。

哪位大侠知道,给我留下言,万分感谢啊。

 

SQliteOpenHelperDemo.java

package com.example.sqliteopenhelperdemo;

import android.os.Bundle;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteCursor;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.EditText;
import android.widget.ListView;
import android.support.v4.widget.SimpleCursorAdapter;

public class SQliteOpenHelperDemo extends Activity {
	
	private EditText mEditText;
	private ListView mListView;
	private SimpleCursorAdapter adapter;
	private MyDataBase dataBase;
	private  Cursor mCursor;
	private int _id;//当前游标Cursor所在的字段值

	@SuppressWarnings("deprecation")
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_sqlite_open_helper_demo);

		mEditText = (EditText) this.findViewById(R.id.edit_id);
		mListView = (ListView) this.findViewById(R.id.listView_id);
		mListView.setOnItemClickListener(clickListener);
		mListView.setOnItemSelectedListener(selectedListener);
		
		//创建SQLiteOpenHelper对象的引用
		dataBase=new MyDataBase(this);
	    /* 取得DataBase里的资料 */
		mCursor=dataBase.query();
	    /* new SimpleCursorAdapter并将myCursor传入,显示数据的字段为   _id,todo_text */ 
		adapter=new SimpleCursorAdapter(
				this,
				R.layout.list,
				mCursor, 
				new String[]{
						MyDataBase.FIELD_id,
						MyDataBase.FIELD_TEXT
		       },
		        new int[]{
						R.id.itemid_id,
						R.id.itemcon_id,						
				});
		mListView.setAdapter(adapter);
		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater()
				.inflate(R.menu.activity_sqlite_open_helper_demo, menu);
		return true;
	}

	public boolean onMenuItemSelected(int featureId, MenuItem item) {
		switch (item.getItemId()) {
		case R.id.menu_add:
			this.add();
			break;
		case R.id.menu_modfi:
			this.mod();
			break;
		case R.id.menu_delete:
            this.delete();
			break;

		default:
			break;
		}
		return false;

	};
   // ListView的点击事件处理
	OnItemClickListener clickListener = new OnItemClickListener() {

		public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
				long arg3) {
			// TODO Auto-generated method stub
			mCursor.moveToPosition(arg2);
			_id=mCursor.getInt(mCursor.getColumnIndex(MyDataBase.FIELD_id));
			mEditText.setText(mCursor.getString(mCursor.getColumnIndex(MyDataBase.FIELD_TEXT)));
		}

	};
	//监听处理鼠标滚轮的事件处理
	OnItemSelectedListener selectedListener = new OnItemSelectedListener() {

		public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
				long arg3) {
			// TODO Auto-generated method stub
			
			_id=mCursor.getInt(mCursor.getColumnIndex(MyDataBase.FIELD_id));
			SQLiteCursor  c=(SQLiteCursor)arg0.getSelectedItem();
			mEditText.setText(c.getString(c.getColumnIndex(MyDataBase.FIELD_TEXT)));
		}

		public void onNothingSelected(AdapterView<?> arg0) {
			// TODO Auto-generated method stub

		}

	};

	//更新ListView
	public void  myUpDateShow()
	{
		         /* 重新查询 */
				mCursor.requery();
				//告知适配器已经改变
				adapter.notifyDataSetChanged();
				mEditText.setText("");
				_id = 0; 
	}
	//增加
	public void add()
	{
		String str=mEditText.getText().toString();
		if (str.equalsIgnoreCase("")) {
			return;
		}
		 /* 新增数据到数据库 */
		dataBase.addMethod(str);
		myUpDateShow();
	}
	//修改
	public void mod()
	{
		String str=mEditText.getText().toString();
		if (str.equalsIgnoreCase("")) {
			return;
		}
		//修改
		dataBase.modMethod(_id,str);
		myUpDateShow();
	}
	//删除
	public void delete()
	{
		if (_id==0) {
			return;
		}
		dataBase.deleteMethod(_id);
		myUpDateShow();
	}
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub
		if (keyCode==KeyEvent.KEYCODE_BACK) {
			//关闭数据库,退出程序
			dataBase.close();
			this.finish();
		}
		return super.onKeyDown(keyCode, event);
	}
	


}

MyDataBase.java

package com.example.sqliteopenhelperdemo;

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

public class MyDataBase extends SQLiteOpenHelper {

	private static final String DATABASE_NAME = "demo_db";//数据库的名字
	private static final int DATABASEVERSION = 1;//版本号
	private static final String TABLE_NAME = "demo_table";//表名
	public static final String FIELD_id = "_id";//必须为_id
	public static final String FIELD_TEXT = "demo_text";
	private SQLiteDatabase db;//数据库
	private static final String TAG = "MyDataBase";

	public MyDataBase(Context context) {
		super(context, DATABASE_NAME, null, DATABASEVERSION);
		// TODO Auto-generated constructor stub
		db = this.getWritableDatabase();// 打开或新建数据库(第一次时创建)获得SQLiteDatabase对象,为了读取和写入数据

	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		/* 建立表table */
		Log.i(TAG, " onCreate() ");
		String sql = "CREATE TABLE " + TABLE_NAME + " (" + FIELD_id
				+ " INTEGER PRIMARY KEY AUTOINCREMENT," + " " + FIELD_TEXT
				+ " TEXT)";
		db.execSQL(sql);
	}

	//更新数据库
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		Log.i(TAG, " onUpgrade() ");
		//删除表的SQL
		String sql = "DROP TABLE IF EXITS " + TABLE_NAME;
		db.execSQL(sql);
		onCreate(db);
	}

	//关闭数据库
	@Override
	public synchronized void close() {
		// TODO Auto-generated method stub
		Log.i(TAG, " close() ");
		db.close();
		super.close();
	}

	@Override
	public void onOpen(SQLiteDatabase db1) {
		// TODO Auto-generated method stub
		Log.i(TAG, " onOpen() ");
		super.onOpen(db1);
	}

	// 增加数据
	public long addMethod(String str) {
		/* 将新增的值放入ContentValues */
		ContentValues cv = new ContentValues();
		cv.put(FIELD_TEXT, str);//键值对
		long row = db.insert(TABLE_NAME, null, cv);
		Log.i(TAG, "addMethod row=" + row);
		return row;
	}

	// 删除
	public void deleteMethod(int id) {
		String[] whereArgs = { Integer.toString(id) };
		int rowsaffected = db.delete(TABLE_NAME, FIELD_id + "=?", whereArgs);
		Log.i(TAG, "deleteMethod() rowsaffected=" + rowsaffected);
	}

	// 修改
	public void modMethod(int id, String str) {
		ContentValues values = new ContentValues();
		values.put(FIELD_TEXT, str);
		String[] whereArgs = { Integer.toString(id) };
		int rowsaffected = db.update(TABLE_NAME, values, FIELD_id + " = ?",
				whereArgs);
		Log.i(TAG, "modMethod() rowsaffected=" + rowsaffected);
	}

	// 查询所有的数据 ,返回Cursor对象
	public Cursor query() {
		//asc是升序desc为降序(默认为asc)
		return db.query(TABLE_NAME, null, null, null, null, null,  FIELD_id + " ASC");
	}

}

写不开了
其他布局xml文件等见资源:

http://download.csdn.net/detail/ta893115871/4440305


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值