`
umbrellall1
  • 浏览: 147000 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

第三章:手机增 删 查 改(SQLiteOpenHelper)

阅读更多
效果:





























main.xml

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<EditText
android:id="@+id/text"
android:layout_width="247px"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_x="20px"
android:layout_y="10px"
>
</EditText>
<ListView
android:id="@+id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="27px"
android:layout_y="73px"
>
</ListView>


</AbsoluteLayout>




list.xml

<?xml version="1.0" encoding="UTF-8"?>
<TextView
	android:id="@+id/text1"
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="wrap_content"
	android:layout_height="20px"
	android:textSize="14sp"/>





package sqlite.open.helper.test;

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

public class SQLiteOpenHelperTest extends Activity {
	private  DataTest data;
	private Cursor myCursor;
	private ListView myListView;
	private EditText myEditText;
	private int _id;
	protected final static int MENU_ADD=Menu.FIRST;
	protected final static int MENU_EDIT=Menu.FIRST+1;
	protected final static int MENU_DELETE=Menu.FIRST+2;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /**载入main.xml*/
        setContentView(R.layout.main);
        /**载入通过id找到ListView对象*/
        myListView=(ListView)findViewById(R.id.list);
        /**载入通过id找到EditText对象*/
        myEditText=(EditText)findViewById(R.id.text);
        /**实例化DataTest对象传入当前对象*/
        data=new DataTest(this);
        /**取得DataBase数据*/
        myCursor=data.select();
        /**实例SimpleCursorAdapter 并传入myCursor,数据的字段为data_text*/
        SimpleCursorAdapter adapter=new SimpleCursorAdapter(this,R.layout.list,myCursor,new String[]{DataTest.FIELD_TEXT},new int[]{R.id.text1});
        /**设置ListView组件内容*/
        myListView.setAdapter(adapter);
        /**设置ListView行的点击事件*/
        myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
		        /**将myCursor移到所点击的值*/
				myCursor.moveToPosition(arg2);
				/**取得字段id的值*/
				_id=myCursor.getInt(0);
				/**取得字段data_text的值*/
				myEditText.setText(myCursor.getString(1));
			}
		});
      
        myListView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				  /**取得的是SQLiteCursor对象*/
				SQLiteCursor sc=(SQLiteCursor)arg0.getSelectedItem();
				/**取得字段id的值*/
				_id=sc.getInt(0);
				/**取得字段data_text的值*/
				myEditText.setText(sc.getString(1));
			}
			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
			}
		});
        
    }
    /**该方法是判断点击Menu按钮*/
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		super.onOptionsItemSelected(item);
		switch(item.getItemId()){
			case MENU_ADD:
				this.addData();
				break;
			case MENU_EDIT:
				this.editData();
				break;
			case MENU_DELETE:
				this.deleteData();
				break;
		}
		return true;
	}
	 /**该方法是设置添加自定义Menu*/
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		super.onCreateOptionsMenu(menu);
		menu.add(Menu.NONE,MENU_ADD,0,R.string.add_Menu);
		menu.add(Menu.NONE,MENU_EDIT,0,R.string.edit_Menu);
		menu.add(Menu.NONE,MENU_DELETE,0,R.string.delete_Menu);
		return true;
	}
	
	private void addData(){
		/**输入的是否为空*/
		if(myEditText.getText().toString().equals("")){
			return;
		}
		 /**添加数据到数据库*/
		data.insert(myEditText.getText().toString());
		/**重新查询*/
		myCursor.requery();
		/**刷新ListView*/
		myListView.invalidateViews();
		/**设置EditText组件内容*/
		myEditText.setText("");
		_id=0;
	}

    private void editData(){
    	/**输入的是否为空*/
    	if(myEditText.getText().toString().equals("")){
    		return;
    	}
    	 /**修改数据到数据库*/
    	data.update(_id, myEditText.getText().toString());
    	/**重新查询*/
    	myCursor.requery();
    	/**刷新ListView*/
    	myListView.invalidateViews();
    	/**设置EditText组件内容*/
    	myEditText.setText("");
    	_id=0;
    }
    private void deleteData(){
    	if(_id==0){
    		return;
    	}
    	/**删除数据 */
    	data.delete(_id);
    	/**重新查询*/
    	myCursor.requery();
    	/**刷新ListView*/
    	myListView.invalidateViews();
    	/**设置EditText组件内容*/
    	myEditText.setText("");
    	_id=0;
    }
}



package sqlite.open.helper.test;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DataTest extends SQLiteOpenHelper {
	private final static String DATABASE_NAME="data_db";
	private final static int DATABASE_VERSION=1;
	private final static String TABLE_NAME="data_table";
	public final static String FIELD_id="_id";
	public final static String FIELD_TEXT="data_text";

	public DataTest(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		/**创建一张名为data_text的表*/
		String sql="CREATE TABLE "+TABLE_NAME+" ("+FIELD_id+" INTEGER primary key autoincrement, "+" "+FIELD_TEXT+" text)";
		/**执行SQL*/
		db.execSQL(sql);
	}
	
	
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		String sql="DROP TABLE IF EXISTS"+TABLE_NAME;
		db.execSQL(sql);
		onCreate(db);
	}
	/**查询数据*/
	public Cursor select(){
		/**
		 * public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
		 * 
		 * table        	The table name to compile the query against.
		 * columns      	A list of which columns to return. Passing null will return all columns, which is discouraged to prevent reading data from storage that isn't going to be used.
		 * selection		A filter declaring which rows to return, formatted as an SQL WHERE clause (excluding the WHERE itself). Passing null will return all rows for the given table
		 * selectionArgs	You may include ?s in selection, which will be replaced by the values from selectionArgs, in order that they appear in the selection. The values will be bound as Strings.
		 * groupBy			A filter declaring how to group rows, formatted as an SQL GROUP BY clause (excluding the GROUP BY itself). Passing null will cause the rows to not be grouped.
		 * having			A filter declare which row groups to include in the cursor, if row grouping is being used, formatted as an SQL HAVING clause (excluding the HAVING itself). Passing null will cause all row groups to be included, and is required when row grouping is not being used.
		 * orderBy			How to order the rows, formatted as an SQL ORDER BY clause (excluding the ORDER BY itself). Passing null will use the default sort order, which may be unordered.
		 * 
		 * Returns
		 * A Cursor object, which is positioned before the first entry
		 * */
		
		SQLiteDatabase db=this.getReadableDatabase();
		Cursor cursor=db.query(TABLE_NAME, null, null, null, null, null, null);
		return cursor;
	}
	/**添加数据*/
	public long insert(String text){
		SQLiteDatabase db=this.getWritableDatabase();
		/**将添加的数据放入 ContentValues*/
		ContentValues cv=new ContentValues();
		cv.put(FIELD_TEXT, text);
		/**
		 * public long insert (String table, String nullColumnHack, ContentValues values)
		 * 
		 * table			the table to insert the row into
		 * nullColumnHack	SQL doesn't allow inserting a completely empty row, so if initialValues is empty this column will explicitly be assigned a NULL value.
		 * values			this map contains the initial column values for the row. The keys should be the column names and the values the column values。
		 * 
		 * Returns
		 * the row ID of the newly inserted row, or -1 if an error occurred
		 */
		long row=db.insert(TABLE_NAME, null, cv);
		return row;
	}
	/**删除数据*/
	public void delete(int id){
		SQLiteDatabase db=this.getWritableDatabase();
		String where=FIELD_id+"=?";
		String[] whereValue={Integer.toString(id)};
		/**
		 * public int delete (String table, String whereClause, String[] whereArgs)
		 * 
		 * table		the table to delete from
		 * whereClause	the optional WHERE clause to apply when deleting. Passing null will delete all rows.
		 * 
		 * Returns
		 * the number of rows affected if a whereClause is passed in, 0 otherwise. To remove all rows and get a count pass "1" as the whereClause.
		 * */
		db.delete(TABLE_NAME, where, whereValue);
	}
	/**修改数据*/
	public void update(int id,String text){
		SQLiteDatabase db=this.getWritableDatabase();
		String where=FIELD_id+"=?";
		String[] whereValue={Integer.toString(id)};
		/**将添加的数据放入 ContentValues*/
		ContentValues cv=new ContentValues();
		cv.put(FIELD_TEXT, text);
		/**
		 * public int update (String table, ContentValues values, String whereClause, String[] whereArgs)
		 * 
		 * table		the table to update in
		 * values		a map from column names to new column values. null is a valid value that will be translated to NULL
		 * whereClause	the optional WHERE clause to apply when updating. Passing null will update all rows.
		 * 
		 * Returns
		 * the number of rows affected
		 * */
		db.update(TABLE_NAME, cv, where, whereValue);
	}
}







  • 大小: 5.2 KB
  • 大小: 10.2 KB
  • 大小: 5.3 KB
  • 大小: 12.3 KB
  • 大小: 5.4 KB
  • 大小: 11.6 KB
分享到:
评论

相关推荐

    Android实现ListView的增删改查Demo

    这个"Android实现ListView的增删改查Demo"是一个实战教程,旨在教你如何在Android应用中实现对ListView中的数据进行添加、删除、修改和查询操作。这个Demo通常会结合SQLite数据库来存储和管理数据,因为SQLite是...

    android增删改查样例

    在Android开发中,"增删改查"(CRUD,Create、Read、Update、Delete)是数据操作的基础,尤其对于数据库交互来说至关重要。这个"android增删改查样例"显然是一个面向初学者的示教项目,旨在帮助开发者理解如何在...

    安卓简单的登录和对多个表的增删改查

    在安卓应用开发中,"安卓简单的登录和对多个表的增删改查"是一个常见的实践场景,对于初学者来说,这是理解安卓应用基础操作的重要环节。这个项目涉及到的关键知识点包括用户界面设计、网络请求处理、数据库操作以及...

    android之sqlite实现增删改查

    "Android之SQLite实现增删改查" Android平台中,SQLite是一种轻量级的关系型数据库,广泛应用于移动应用开发中。在本例子中,我们将学习如何使用SQLite来实现增删改查操作。 标题解释 "Android之SQLite实现增删改...

    安卓电话簿课程设计(实现对联系人的增删改查).zip

    这个"安卓电话簿课程设计(实现对联系人的增删改查)"项目旨在帮助开发者理解如何利用Android SDK来实现这样的功能。下面我们将深入探讨这个项目所涉及的主要知识点。 首先,我们关注的是AndroidManifest.xml文件,它...

    android实现数据库的增删改查实例代码

    本实例代码"SQLiteDatabaseDemo"旨在教你如何在Android应用中使用SQLite数据库进行基本的增、删、改、查(CRUD)操作。以下是详细的步骤和知识点讲解: 1. **SQLiteOpenHelper**: 这是Android提供的一个抽象类,...

    【Android】Sqlite数据库增删改查(修改版)

    在这个“【Android】Sqlite数据库增删改查(修改版)”项目中,我们将探讨如何在Android应用中使用SQLite进行基本的数据操作:增加、删除、修改和查询。 首先,我们要了解SQLite在Android中的集成。每个Android应用...

    Android简单数据库操作增删改查项目实现

    本项目“Android简单数据库操作增删改查项目实现”旨在介绍如何在Android应用中使用SQLite进行基本的数据操作,包括添加(Insert)、查询(Query)、更新(Update)和删除(Delete)。 1. 数据库初始化: 在...

    Android studio Android寄存系统,登录注册,增删改查,sqlite

    **增删改查操作** 在Android应用与SQLite交互时,CRUD(Create, Read, Update, Delete)操作是最基本的数据操作: 1. **创建(Create)**:使用`SQLiteOpenHelper`的`onCreate()`方法创建数据库和表。例如,通过`...

    数据库的增删改查

    总结来说,Android中的SQLite数据库提供了方便的数据持久化机制,通过`SQLiteOpenHelper`和`SQLiteDatabase`,开发者可以轻松地实现对数据库的增删改查操作,满足应用程序对数据管理的需求。在实际项目中,还需要...

    sqllite登陆注册 sqlite的增删改查操作(转)

    SQLite是一种轻量级的、开源的、自包含的数据库引擎,常用于移动设备或嵌入式系统的本地...通过研究和理解这段代码,你可以掌握如何在Android应用中使用SQLite进行数据管理,实现用户注册登录以及数据的增删改查功能。

    android利用sqlite实现增删改查

    在Android开发中,SQLite是一个非常重要的组件,它是一个轻量级的数据库系统,适用于移动...当然,实际应用中可能还需要考虑数据同步、数据加密、事务处理等更高级的特性,但以上内容已经涵盖了基本的增删改查操作。

    SQLite数据库的增删改查demo

    今天学习数据库的增删改查 调用 SQLiteOpenHelper的 getReadableDatabase()或 getWritableDatabase()方法都会返回一个SQLiteDatabase对象, 借助这个对象就可以对数据进行 CRUD 操作了。

    android sqllite增删改查

    总结,Android SQLite数据库是Android应用中存储本地数据的常用工具,掌握其增删改查操作对于开发具有本地存储功能的应用至关重要。通过实例化SQLiteOpenHelper子类,我们可以方便地管理数据库生命周期,通过SQL语句...

    android数据库增删改查工具

    这个“android数据库增删改查工具”是一个自定义的解决方案,旨在简化Android应用程序中SQLite数据库的操作。开发者通常会遇到处理用户数据、成员信息等需求,这时一个方便的数据库管理工具就显得尤为重要。 首先,...

    无废话Android 系列教程34 [使用系统api实现SQLite增删改查&&测试]

    本教程将深入探讨如何使用系统API实现SQLite数据库的增删改查操作,并进行相关的测试。以下是对这个主题的详细讲解: 一、SQLite数据库基础 SQLite是Android系统内置的SQL数据库引擎,无需单独安装。开发者可以创建...

    安卓简单的登录和对多个表的增删改查适合初学者学习。

    增删改查(CRUD)操作是数据库管理的基础: 1. **创建表**:使用 SQL 的 `CREATE TABLE` 语句定义表结构,包括字段名、数据类型和约束条件。 2. **插入数据**:使用 `INSERT INTO` 语句向表中添加新记录。提供字段...

    sqlite增删改查

    总结,Android中的SQLite数据库操作主要包括创建SQLiteOpenHelper子类、定义数据库版本和名称、重写关键方法以及编写增删改查的辅助方法。在实际应用中,你可以根据需求选择直接使用SQLiteOpenHelper或采用...

    实验项目报告第7章.doc android studio SQLite数据库的创建、增删改查操作 SharedPreferen

    在实验过程中,学生通过创建一个简单的记事本应用,实现了使用 SQLite 进行数据的增删改查,以及利用 `SharedPreferences` 存储简单的配置信息。这样的实践有助于理解这些数据存储方式在实际开发中的应用,并加深了...

    Android安卓期末大作业 新闻app 实现注册登录增删改查功能

    开发者需要创建数据库表,定义数据模型,并使用SQLiteOpenHelper子类进行数据库操作,如增删改查。 4. **网络请求**:新闻数据通常来源于服务器,因此需要使用网络请求库,如Retrofit或Volley,进行HTTP通信。...

Global site tag (gtag.js) - Google Analytics