android之sqlite实现增删改查

合集下载

使用sqliteopenhelper实现简易通讯录实训报告

使用sqliteopenhelper实现简易通讯录实训报告

实训报告:使用SQLiteOpenHelper实现简易通讯录一、实训目标通过本次实训,掌握SQLite数据库的基本操作,使用SQLiteOpenHelper类创建、打开、升级数据库,以及在Android应用程序中实现简易通讯录功能。

二、实训步骤1.创建SQLite数据库2.使用SQLiteOpenHelper类创建数据库。

首先,创建一个继承自SQLiteOpenHelper的类,并重写onCreate()和onUpgrade()方法。

在onCreate()方法中执行创建表的SQL语句,onUpgrade()方法用于升级数据库时执行更新表的SQL语句。

3.实现通讯录功能4.在通讯录界面上,显示联系人列表。

当用户点击某个联系人时,显示该联系人的详细信息。

实现添加、删除、修改和查询联系人操作。

5.实现数据绑定6.使用Data Binding库将数据绑定到界面上。

在布局文件中定义变量,通过布局文件与Java代码的双向绑定,将联系人数据显示在界面上。

7.实现增删改查操作8.通过SQLiteOpenHelper类提供的insert()、update()、delete()和query()方法实现增删改查操作。

将操作封装在DAO(Data Access Object)类中,方便进行数据操作。

9.测试应用程序10.运行应用程序,测试通讯录功能是否正常工作。

检查添加、删除、修改和查询联系人操作是否能够正确执行。

三、实训总结通过本次实训,我掌握了SQLite数据库的基本操作,了解了如何使用SQLiteOpenHelper 类创建、打开和升级数据库。

同时,我也学会了在Android应用程序中实现简易通讯录功能,包括数据绑定和增删改查操作。

通过实际操作,我对Android应用程序开发有了更深入的理解。

在未来的学习和工作中,我将继续深入学习Android开发技术,提高自己的技能水平。

c数据库的增删改查项目案例

c数据库的增删改查项目案例

c数据库的增删改查项目案例一、项目准备。

1. 得包含SQLite相关的头文件。

SQLite有个方便的C接口,我们这样写:`#include <stdio.h>`:这是标准输入输出头文件,用于在控制台打印信息啥的。

`#include <sqlite3.h>`:这个就是SQLite数据库操作的关键头文件啦。

2. 然后呢,定义一个数据库连接对象。

就像你要跟数据库交朋友,得有个联系方式一样。

`sqlite3 db;`.二、连接数据库(这就像是给数据库打电话)1. 我们使用`sqlite3_open`函数来打开数据库。

如果数据库不存在,SQLite会自动创建一个。

比如我们创建一个名为`test.db`的数据库(这名字就很普通,就像大街上随便一个名字一样)。

代码是这样的:`int rc = sqlite3_open("test.db", &db);`.如果`rc`不等于`SQLITE_OK`(这是SQLite定义的一个常量,表示操作成功),那就说明出问题了,可能是文件权限问题或者磁盘满了之类的(就像打电话占线或者号码不存在一样)。

我们可以这样处理错误:`if (rc!= SQLITE_OK) {`.`fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));`.`sqlite3_close(db);`.`return 1;`.`}`.三、创建表(这就像是给数据库盖房子,先把房子结构规划好)1. 我们要创建一个表,就像在数据库这个大社区里盖一栋楼。

假设我们要创建一个存储用户信息的表,有`id`(就像用户的身份证号,独一无二的)、`name`(用户的名字)和`age`(用户的年龄)这几个字段。

我们用SQL语句来创建这个表,SQL语句就像是给数据库下达的建筑蓝图指令。

sqlite 用法

sqlite 用法

sqlite 用法SQLite是一种轻型关系型数据库管理系统,它是一个C语言库,实现了自给自足、无服务器、零配置、事务性的SQL数据库引擎。

SQLite不需要单独的服务器进程或操作系统支持,这使它成为嵌入式数据库的理想选择,也适用于客户端/服务器的数据库应用程序。

SQLite的文件格式跨平台,可以在不同的操作系统中共享。

SQLite 的应用非常广泛,包括Android、iOS、Windows、Linux等系统中的各种应用程序和网站。

SQLite的使用非常简单,只需要引入SQLite的头文件,然后使用相应的API即可实现数据库的连接、数据的插入、查询、更新和删除等操作。

SQLite的API包含在sqlite3.h头文件中,其中最常用的API包括:sqlite3_open()用于连接数据库,sqlite3_exec()用于执行SQL语句,sqlite3_prepare_v2()用于准备SQL语句,sqlite3_step()用于执行SQL语句的下一步,sqlite3_finalize()用于释放已准备好的SQL语句,sqlite3_close()用于关闭数据库连接等。

在SQLite中,数据存储在表中,每个表由一组列组成。

表的创建可以使用SQL语句CREATE TABLE,格式为:CREATE TABLE 表名 (列1名列1类型, 列2名列2类型, …) 例如:CREATE TABLE user (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)这个语句创建了一个名为“user”的表,包含三列:id、name和age。

其中,id列为主键,类型为INTEGER,name列和age列分别为TEXT和INTEGER类型。

表的数据可以通过INSERT INTO语句进行插入,例如:INSERT INTO user (name, age) VALUES ('Tom', 20) 这个语句向user表中插入了一条记录,name列的值为“Tom”,age列的值为20。

android中SQLite的使用总结,用excSQL和rawQuery方法实现一般得增删改查

android中SQLite的使用总结,用excSQL和rawQuery方法实现一般得增删改查

android中SQLite的使用总结,用excSQL和rawQuery方法实现一般得增删改查1:androidmanifest.xml的内容[html]view plaincopy1.<?xml version="1.0" encoding="utf-8"?>2.<manifest xmlns:android="/apk/res/android"3.package="cn.itcast.db"4.android:versionCode="1"5.android:versionName="1.0">6.<application android:icon="@drawable/icon" android:lab el="@string/app_name">7.<uses-library android:name="android.test.runner" />8.<activity android:name=".MainActivity"9.android:label="@string/app_name">10.<intent-filter>11.<action android:name="android.intent.action.MAIN" / >12.<category android:name=" UNCHER" />13.</intent-filter>14.</activity>15.16.</application>17.18.<uses-sdk android:minSdkVersion="8" />19.<!-- 配置测试环境 -->20.<instrumentation android:name="android.test.Instru mentationTestRunner"21.android:targetPackage="cn.itcast.db"22.android:label="T est for My App"/>23.24.</manifest>2:Person类[java]view plaincopy1.package cn.itcast.domain;2.3.public class Person {4.5.private Integer id;6.private String name;7.8.public Person() {9.10.}11.12.public Integer getId() {13.return id;14.}15.16.public void setId(Integer id) {17.this.id = id;18.}19.20.public String getName() {21.return name;22.}23.24.public void setName(String name) { = name;26.}27.28.@Override29.public String toString() {30.return "Person [id=" + id + ", name=" + name + "]";31.}32.33.}3:DBOpenHelper类,该类继承了SQLiteOpenHelper类[java]view plaincopy1.package cn.itcast.service;2.3.import android.content.Context;4.import android.database.sqlite.SQLiteDatabase;5.import android.database.sqlite.SQLiteOpenHelper;6.import android.database.sqlite.SQLiteDatabase.CursorFac tory;7.8.public class DBOpenHelper extends SQLiteOpenHelper {9.10.private static final String DATABASENAME = "cn.itcast. db";11.private static final int DATABASEVERSION = 1;12.13./*14.* 构造函数15.*/16.public DBOpenHelper(Context context) {17.super(context, DATABASENAME, null, DATABASEVERSION);18.}19.20./*21.* 数据库第一次生成时调用该方法,创建一些表或者初始化一些数据22.* @see android.database.sqlite.SQLiteOpenHelper#on Create(android.database.sqlite.SQLiteDatabase)23.*/24.@Override25.public void onCreate(SQLiteDatabase db) {26.db.execSQL("create table person(personid integer pri mary key autoincrement, name varchar(20))");27.}28.29.@Override30.public void onUpgrade(SQLiteDatabase db, int oldVer sion, int newVersion) {31.32.}33.34.}4:PersonService类[java]view plaincopy1.package cn.itcast.service;2.3.import java.util.ArrayList;4.import java.util.List;5.6.import android.content.Context;7.import android.database.Cursor;8.import android.database.sqlite.SQLiteDatabase;9.import cn.itcast.domain.Person;10.11.public class PersonService {12.13.private DBOpenHelper dbOpenHelper;14.15.public PersonService(Context context) {16.this.dbOpenHelper = new DBOpenHelper(context);17.}18.19./*20.* save a person to the database21.*/22.public void save(Person person) {23.SQLiteDatabase database = dbOpenHelper.getWritabl eDatabase();24.database.execSQL("insert into person(name) values (?) ", new Object[]{person.getName()});25.}26.27./*28.* updata a person to the database29.*/30.public void update(Person person) {31.SQLiteDatabase database = dbOpenHelper.getWritabl eDatabase();32.database.execSQL("update person set name=? wherepersonid=?", new Object[]{person.getName(), person.getId()});33.}34.35./*36.* delete a person from the database according to the id37.*/38.public void delete(Integer id) {39.SQLiteDatabase database = dbOpenHelper.getWritabl eDatabase();40.database.execSQL("delete from person where personi d=?", new Object[]{id.toString()});41.}42.43./*44.* find a person from the database according to the id45.*/46.public Person find(Integer id) {47.SQLiteDatabase database = dbOpenHelper.getReadab leDatabase();48.Cursor cursor = database.rawQuery("select * from per son where personid=?", new String[]{id.toString()});49.Person person = null;50.if(cursor.moveT oFirst()) {51.Integer personid = cursor.getInt(cursor.getColumnInd ex("personid"));52.String name = cursor.getString(cursor.getColumnIndex ("name"));53.person = new Person();54.person.setId(personid);56.}57.return person;58.}59.60./*61.* get the data of person accroding to the offset and m axResult62.*/63.public List<Person> getScrollData(Integer offset, Integ er maxResult) {64.SQLiteDatabase database = dbOpenHelper.getReadab leDatabase();65.Cursor cursor = database.rawQuery("select * from per son limit ?,?", new String[] {offset.toString(), maxResult.toString() });66.int idIndex = 0;67.int nameIndex = 0;68.List<Person> personList = null;69.70.if(cursor.getCount() >= 0) {71.idIndex = cursor.getColumnIndex("personid");Index = cursor.getColumnIndex("name");73.personList = new ArrayList<Person>();74.}75.76.while(cursor.moveToNext()) {77.Integer personid = cursor.getInt(idIndex);78.String name = cursor.getString(nameIndex);79.Person person = new Person();81.person.setName(name);82.personList.add(person);83.}84.return personList;85.}86.87./*88.* get the count of the database89.*/90.public long getCount(){91.SQLiteDatabase database = dbOpenHelper.getReadab leDatabase();92.Cursor cursor = database.rawQuery("select count(*) fr om person", null);93.cursor.moveToFirst();94.return cursor.getLong(0);95.}96.97.}5:PersonServiceT est类[java]view plaincopy1.package cn.itcast.db;2.3.import java.util.List;4.5.import android.test.AndroidTestCase;6.import android.util.Log;7.import cn.itcast.domain.Person;8.import cn.itcast.service.DBOpenHelper;9.import cn.itcast.service.PersonService;10.11.public class PersonServiceTest extends AndroidT estCase {12.private static final String TAG = "PersonServiceTest";13.14./*15.* 测试生成数据库的方法16.*/17.public void testCreateDB() throws Throwable {18.DBOpenHelper dbOpenHelper = new DBOpenHelper( this.getContext());19.dbOpenHelper.getWritableDatabase(); //第一次调用该方法会生成数据库20.21.}22.23./*24.* 测试保存方法25.*/26.public void testSave() throws Throwable{27.PersonService personService = new PersonService(this .getContext());28.29.Person person1 = new Person();30.person1.setName("zhangsan");31.personService.save(person1);32.33.Person person2 = new Person();34.person2.setName("lisi");35.personService.save(person2);36.37.Person person3 = new Person();38.person3.setName("wangwu");39.personService.save(person3);40.41.}42.43.public void testDelete() {44.PersonService personService = new PersonService(this .getContext());45.personService.delete(1);46.47.}48.49./*50.* 测试更新方法51.*/52.public void testUpdate() {53.PersonService personService = new PersonService(this .getContext());54.Person person = personService.find(1);55.person.setName("zhaoliu");56.personService.update(person);57.58.}59.60./*61.* 测试获得数据方法63.public void testGetScrollData() throws Throwable{64.PersonService personService = new PersonService(this .getContext());65.List<Person> persons = personService.getScrollData(0 , 3);66.for(Person person : persons) {67.Log.i(TAG, person.toString());68.}69.}70.71./*72.* 测试根据id查找的方法73.*/74.public void testFind() throws Throwable{75.PersonService personService = new PersonService(this .getContext());76.Person person = personService.find(1);77.Log.i(TAG, person.toString());78.79.}80.81./*82.* 测试获得数量的方法83.*/84.public void testGetCount() {85.PersonService personService = new PersonService(this .getContext());86.long count = personService.getCount();87.Log.i(TAG, count + "");89.}。

在Android应用中利用SQLite进行本地数据库操作

在Android应用中利用SQLite进行本地数据库操作

在Android应用中利用SQLite进行本地数据库操作随着移动应用的不断发展,电子设备成为人们生活中不可或缺的一部分。

而Android操作系统作为最广泛使用的移动操作系统之一,它提供了强大的开发平台,为开发者们提供了各种各样的开发工具和API。

其中,SQLite作为Android应用中的一种轻量级数据库管理系统,被广泛应用于数据存储和管理。

本文将介绍在Android应用中通过SQLite实现本地数据库操作的方法。

1. 简介SQLite是一种无服务器的自包含的数据库引擎,它在Android操作系统中作为默认的关系型数据库引擎。

它无需独立的服务器进程,将数据库引擎与应用程序合并在一起,使得应用程序可以直接操作数据库。

SQLite在移动设备上非常流行,因为它占用的磁盘空间相对较少,并且提供了性能高效的操作方式。

2. 创建数据库在Android应用中使用SQLite进行本地数据库操作,首先需要创建一个数据库。

Android提供了SQLiteOpenHelper类来管理数据库的创建和升级。

在创建数据库之前,首先需要定义数据库的结构,包括表的结构和字段信息。

接着,通过继承SQLiteOpenHelper类,重写onCreate()方法和onUpgrade()方法,可以自动创建数据库和升级数据库。

3. 创建表使用SQLite进行本地数据库操作时,需要在数据库中创建表来存储数据。

通过执行SQL语句,可以在数据库中创建表以及定义表中的字段信息。

SQLite支持多种数据类型,包括整型、浮点型、文本型等。

通过在SQL语句中指定字段的名称和类型,可以创建适合应用需求的表。

4. 插入数据插入数据是在数据库中进行本地数据库操作的常见操作之一。

通过执行SQL 语句的INSERT INTO语句,可以将数据插入到数据库的表中。

通过使用ContentValues类,可以方便地设置插入数据的字段值。

通过调用SQLiteDatabase 类的insert()方法,可以执行插入数据的操作。

AndroidKotlin使用SQLite案例详解

AndroidKotlin使用SQLite案例详解

AndroidKotlin使⽤SQLite案例详解Kotlin使⽤SQLite⾸先确定我们的⽬标,SQLite只是⼀种⼯具,我们需要掌握就是增删改查就可以,我们真正需要动脑的还是项⽬中的业务逻辑。

我这篇⽂章写得⽐较适合新⼿,没⽤过SQLite的同学。

前期准备⼯作新建⼀个类MyDataBaseHelper继承⾃SQLiteOpenHelper,代码如下:class MyDatabaseHelper(var context: Context, name: String, version: Int) :SQLiteOpenHelper(context, name, null, version) {public var createBook="create table Book (" +"id integer primary key autoincrement," +"author text," +"price real," +"pages integer," +"name text)"override fun onCreate(db: SQLiteDatabase?) {// 下⾯这个todo 如果不注释掉的话就会报错。

// TODO("not implemented") //To change body of created functions use File | Settings | File Templates.db?.execSQL(createBook)Toast.makeText(context,"Create Successed",Toast.LENGTH_LONG).show()}override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {// TODO("not implemented") //To change body of created functions use File | Settings | File Templates.db?.execSQL("drop table if exists Book")onCreate(db)}}对数据进⾏操作操作⽐较简单,下⾯直接看代码:Activity中class MySQLite : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(yout.activity_my_sqlite)val dbHelper=MyDatabaseHelper(this,"BookStore.db",1)/*** 创建表*/btnCreateDataBase.setOnClickListener {dbHelper.writableDatabase}/*** 添加数据*/btnAddData.setOnClickListener {val db=dbHelper.writableDatabaseval Values1=ContentValues().apply {// 第⼀条数据put("name","The Da Vinci Code")put("author","Dan Broen")put("pages",454)put("price",16.96)}db.insert("Book",null,Values1)val values2=ContentValues().apply {// 第⼆条数据put("name","The Lost Symbol")put("author","Dan Brown")put("pages",510)put("price",19.95)}db.insert("Book",null,values2)}btnUpdateData.setOnClickListener {val db=dbHelper.writableDatabaseval values=ContentValues()values.put("price",10.99)db.update("Book",values,"name=?", arrayOf("The Da Vinci Code"))}btnDeleteData.setOnClickListener {val db=dbHelper.writableDatabasedb.delete("Book","pages>?", arrayOf("500"))}btnQueryData.setOnClickListener {val db=dbHelper.writableDatabase// 查询Book表中所有数据// 这⾥获取到是Cursor对象val cursor=db.query("Book",null,null,null,null,null,null)if (cursor.moveToFirst()){do {val name=cursor.getString(cursor.getColumnIndex("name"))val author=cursor.getString(cursor.getColumnIndex("author"))val pages=cursor.getString(cursor.getColumnIndex("pages"))val price=cursor.getString(cursor.getColumnIndex("price"))Log.d("MainActivity","book name is $name")Log.d("MainActivity","author is $author")Log.d("MainActivity","pages is $pages")Log.d("MainActivity","price is $price")}while (cursor.moveToNext())}cursor.close()}}}布局⽂件<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="/apk/res/android" xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".sqlite.MySQLite"><Buttonandroid:id="@+id/btnCreateDataBase"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="CreateDataBase"android:textAllCaps="false"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/btnAddData"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="AddData"android:textAllCaps="false"app:layout_constraintTop_toBottomOf="@+id/btnCreateDataBase" /><Buttonandroid:id="@+id/btnUpdateData"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="UpdateData"android:textAllCaps="false"app:layout_constraintTop_toBottomOf="@+id/btnAddData" /><Buttonandroid:id="@+id/btnDeleteData"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="DeleteData"app:layout_constraintTop_toBottomOf="@+id/btnUpdateData" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/btnQueryData"android:text="Query Data"android:textAllCaps="false"app:layout_constraintTop_toBottomOf="@+id/btnDeleteData"/></androidx.constraintlayout.widget.ConstraintLayout>到此这篇关于Android Kotlin使⽤SQLite案例详解的⽂章就介绍到这了,更多相关Android Kotlin使⽤SQLite内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

android 数据库update用法

android 数据库update用法

android 数据库update用法Android 数据库 Update 用法:在 Android 开发中,我们经常需要对数据库中的数据进行更新操作。

使用Update 语句可以快速修改数据库中的数据。

下面将详细介绍 Android 中数据库Update 的用法。

首先,我们需要使用 SQLiteDatabase 的 update() 方法来执行更新操作。

update() 方法的参数包括表名、值、条件和条件参数。

```java// 创建数据库实例SQLiteDatabase db = getWritableDatabase();// 定义更新的值ContentValues values = new ContentValues();values.put("columnName1", newValue1);values.put("columnName2", newValue2);// 条件语句和条件参数String selection = "columnName3 = ?";String[] selectionArgs = { "conditionParam" };// 执行更新操作int rowsUpdated = db.update("tableName", values, selection, selectionArgs);```在上述代码中,我们先创建了一个 SQLiteDatabase 实例。

接下来,我们定义了一个 ContentValues 对象来存储待更新的值。

`put()` 方法用于指定每个列的新值。

然后,我们定义了一个条件语句 `selection`,用于指定更新的条件。

条件参数`selectionArgs` 是一个字符串数组,用于传递给条件语句中的参数。

最后,我们使用 `update()` 方法执行更新,并将受影响的行数保存在变量 `rowsUpdated` 中。

Android操作SQLite数据库(增、删、改、查、分页等)及ListView显示数据的方法详解

Android操作SQLite数据库(增、删、改、查、分页等)及ListView显示数据的方法详解

Android操作SQLite数据库(增、删、改、查、分页等)及ListView显⽰数据的⽅法详解本⽂实例讲述了Android操作SQLite数据库(增、删、改、查、分页等)及ListView显⽰数据的⽅法。

分享给⼤家供⼤家参考,具体如下:由于刚接触android开发,故此想把学到的基础知识记录⼀下,以备查询,故此写的⽐较啰嗦:步骤如下:⼀、介绍:此⽂主要是介绍怎么使⽤android⾃带的数据库SQLite,以及把后台的数据⽤ListView控件显⽰⼆、新建⼀个android⼯程——DBSQLiteOperate⼯程⽬录:三、清单列表AndroidManifest.xml的配置为:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="com.example.dboperate"android:versionCode="1"android:versionName="1.0" ><uses-sdk android:minSdkVersion="8" /><applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name" ><!--单元测试加这句--><uses-library android:name="android.test.runner" /><activityandroid:name=".DBSQLiteOperateActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /></intent-filter></activity></application><instrumentation android:name="android.test.InstrumentationTestRunner"android:targetPackage="com.example.dboperate"android:label="Test for my app"/></manifest>四、main.xml配置清单:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><LinearLayout android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:id="@+id/name"android:layout_width="100dip"android:layout_height="wrap_content"android:text="@string/name"android:gravity="center"/><TextViewandroid:id="@+id/phone"android:layout_width="100dip"android:layout_height="wrap_content"android:text="@string/phone"android:gravity="center"/><TextViewandroid:id="@+id/amount"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/amount"android:gravity="center"/></LinearLayout><ListViewandroid:id="@+id/listView"android:layout_width="fill_parent"android:layout_height="fill_parent" ></ListView></LinearLayout>五、item.xml配置清单:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="horizontal" ><TextViewandroid:id="@+id/name"android:layout_width="100dip"android:layout_height="wrap_content"android:text="@string/name"android:gravity="center"/><TextViewandroid:id="@+id/phone"android:layout_width="100dip"android:layout_height="wrap_content"android:text="@string/phone"android:gravity="center"/><TextViewandroid:id="@+id/amount"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/amount"android:gravity="center"/></LinearLayout>六、string.xml配置清单:<?xml version="1.0" encoding="utf-8"?><resources><string name="hello">Hello World, DBSQLiteOperateActivity!</string><string name="app_name">ExampleDBSQLiteOperate8</string><string name="name">姓名</string><string name="phone">电话</string><string name="amount">存款</string></resources>七、DBSQLiteOperateActivity.java Activity类的源码:package com.example.dboperate;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.example.adapter.PersonAdapter;import com.example.domain.Person;import com.example.service.PersonService;import android.app.Activity;import android.database.Cursor;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.SimpleCursorAdapter;import android.widget.Toast;public class DBSQLiteOperateActivity extends Activity {ListView listView;PersonService personService;OnItemClickListener listViewListener;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);listViewListener = new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {//得到listView控件ListView listView = (ListView)parent;//1、如果使⽤⾃定义适配器,返回的是Person对象//得到该条⽬数据// Person person = (Person)listView.getItemAtPosition(position);// //⼴播出去// Toast.makeText(getApplicationContext(), person.toString(), Toast.LENGTH_LONG).show(); //2、如果使⽤showList2()⽅法中的适配器时,则取得的值是不⼀样的,返回的是cursor// Cursor cursor = (Cursor)listView.getItemAtPosition(position);// int personid = cursor.getInt(cursor.getColumnIndex("_id"));// Toast.makeText(getApplicationContext(), personid+"", Toast.LENGTH_LONG).show();//3、如果使⽤showList()⽅法中的适配器时,则取得的值是不⼀样的,返回的是map@SuppressWarnings("unchecked")Map<String,Object> map = (Map)listView.getItemAtPosition(position);String name = map.get("name").toString();String personid = map.get("personid").toString();Toast.makeText(getApplicationContext(), personid +"-"+ name, Toast.LENGTH_LONG).show(); }};listView = (ListView) this.findViewById(R.id.listView);listView.setOnItemClickListener(listViewListener);personService = new PersonService(this);showList();}private void showList() {List<Person> persons = personService.getScrollData(0, 50);List<HashMap<String,Object>> data = new ArrayList<HashMap<String,Object>>();for(Person person : persons){HashMap<String,Object> item = new HashMap<String,Object>();item.put("name", person.getName());item.put("phone", person.getPhone());item.put("amount", person.getAmount());item.put("personid", person.getId());data.add(item);}SimpleAdapter adapter = new SimpleAdapter(this,data,yout.item, new String[]{"name","phone","amount"}, new int[]{,R.id.phone,R.id.amount});listView.setAdapter(adapter);}public void showList2(){Cursor cursor = personService.getCursorScrollData(0, 50);//该适配器要求返回的结果集cursor必须包含_id字段,所以需要对取得结果集进⾏处理SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,yout.item,cursor,new String[]{"name","phone","amount"}, new int[]{,R.id.phone,R.id.amount} ); listView.setAdapter(adapter);}/*** ⾃定义适配器*/public void showList3(){List<Person> persons = personService.getScrollData(0, 50);/*** 第⼀个参数:上下⽂context,第⼆个参数:要显⽰的数据,第三个参数:绑定的条⽬界⾯*/PersonAdapter adapter = new PersonAdapter(this, persons, yout.item);listView.setAdapter(adapter);}}⼋、person.java 实体类源码:package com.example.domain;public class Person {private Integer id;private String name;private String phone;private Integer amount;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public Person(String name, String phone) { = name;this.phone = phone;}public Person(Integer id, String name, String phone,Integer amount) {super();this.id = id; = name;this.phone = phone;this.amount = amount;}public Person() {super();}public Integer getAmount() {return amount;}public void setAmount(Integer amount) {this.amount = amount;}@Overridepublic String toString() {return "Person [id=" + id + ", name=" + name + ", phone=" + phone+ ", amount=" + amount + "]";}}九、DBOperateHelper.java 业务类源码:package com.example.service;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class DBOperateHelper extends SQLiteOpenHelper {public DBOperateHelper(Context context) {//默认创建的数据库⽂件保存在<包名>/database///第⼀个参数是上下⽂,第⼆个参数是数据库名称,第三个是游标⼯⼚为null时使⽤数据库默认的游标⼯⼚,第四个是数据库版本号但是不能为0,⼀般⼤于0super(context, "smallpig", null, 4);}/*** 数据库每⼀次被创建时被调⽤*/@Overridepublic void onCreate(SQLiteDatabase sqldb) {sqldb.execSQL("create table person(personid integer primary key autoincrement,name varchar(20),phone varchar(12) null)");}/*** 每⼀次数据库版本号发⽣变动时触发此⽅法* ⽐如如果想往数据库中再插⼊⼀些表、字段或者其他信息时通过修改数据库版本号来触发此⽅法*/@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//db.execSQL("alter table person add phone varchar(12) null");\db.execSQL("alter table person add amount Integer null");}}⼗、PersonService.java 业务类源码:package com.example.service;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import com.example.domain.Person;public class PersonService {private DBOperateHelper dbOperateHelper;public PersonService(Context context) {this.dbOperateHelper = new DBOperateHelper(context);}/*** 保存记录* @param person*/public void save(Person person){//得到数据库实例,⾥⾯封装了数据库操作⽅法SQLiteDatabase sqldb = dbOperateHelper.getWritableDatabase();//sqldb.execSQL("insert into person(name,phone) values('"+person.getName()+"','"+person.getPhone()+"')");//利⽤占位符可以避免注⼊,但是注意数组参与与占位符对应的字段要⼀⼀对应sqldb.execSQL("insert into person(name,phone,amount) values(?,?,?)",new Object[]{person.getName(),person.getPhone(),person.getAmount()});//关闭数据库sqldb.close();}/*** 删除记录* @param id*/public void delete(Integer id){SQLiteDatabase sqldb = dbOperateHelper.getWritableDatabase();sqldb.execSQL("delete from person where personid=?",new Object[]{id});sqldb.close();}/*** 更新记录* @param person*/public void update(Person person){SQLiteDatabase sqldb = dbOperateHelper.getWritableDatabase();sqldb.execSQL("update person set name=?,phone=?,amount=? where personid=?",new Object[]{person.getName(),person.getPhone(),person.getAmount(),person.getId()}); sqldb.close();}/*** 通过ID查询记录* @param id* @return*/public Person find(Integer id){/*** getWritableDatabase 与 getReadableDatabase 的区别:* getReadableDatabase会先返回getWritableDatabase(可写),如果调⽤getWritableDatabase失败* 则才会调⽤getReadableDatabase后续⽅法,使数据库只读* 当写⼊的数据超过数据库⼤⼩则调⽤getWritableDatabase会失败* 所以只读时则可以使⽤此⽅法,其它情况(只要不是超过数据库⼤⼩)也可以使⽤此⽅法*/SQLiteDatabase sqldb = dbOperateHelper.getReadableDatabase();Cursor cursor = sqldb.rawQuery("select * from person where personid=?", new String[]{String.valueOf(id)});int personid;String name;String phone;int amount;Person person = null;if(cursor.moveToFirst()){personid = cursor.getInt(cursor.getColumnIndex("personid"));name = cursor.getString(cursor.getColumnIndex("name"));phone = cursor.getString(cursor.getColumnIndex("phone"));amount = cursor.getInt(cursor.getColumnIndex("amount"));person = new Person(personid,name,phone,amount);}cursor.close();return person;}/*** 返回指定长度记录,limit 3,5,适⽤于分页* @param offset 起始* @param maxResult 长度* @return*/public List<Person> getScrollData(int offset,int maxResult){SQLiteDatabase sqldb = dbOperateHelper.getReadableDatabase();Cursor cursor = sqldb.rawQuery("select * from person order by personid asc limit ?,?", new String[]{String.valueOf(offset),String.valueOf(maxResult)});int personid;String name;String phone;int amount;Person person = null;List<Person> persons = new ArrayList<Person>();while(cursor.moveToNext()){personid = cursor.getInt(cursor.getColumnIndex("personid"));name = cursor.getString(cursor.getColumnIndex("name"));phone = cursor.getString(cursor.getColumnIndex("phone"));amount = cursor.getInt(cursor.getColumnIndex("amount"));person = new Person(personid,name,phone,amount);persons.add(person);}cursor.close();return persons;}/*** 返回cursor* @param offset 起始* @param maxResult 长度* @return*/public Cursor getCursorScrollData(int offset,int maxResult){SQLiteDatabase sqldb = dbOperateHelper.getReadableDatabase();Cursor cursor = sqldb.rawQuery("select personid as _id,name,phone,amount from person order by personid asc limit ?,?", new String[]{String.valueOf(offset),String.valueOf(maxResult)}); return cursor;}/*** 返回总记录数* @return*/public long getCount(){SQLiteDatabase sqldb = dbOperateHelper.getReadableDatabase();Cursor cursor = sqldb.rawQuery("select count(*) from person", null);//该查询语句值返回⼀条语句cursor.moveToFirst();long result = cursor.getLong(0);cursor.close();return result;}public void payment(){SQLiteDatabase sqldb = dbOperateHelper.getWritableDatabase();sqldb.beginTransaction();//开启事务try{sqldb.execSQL("update person set amount = amount -10 where personid=1");sqldb.execSQL("update person set amount = amount + 10 where personid=2");sqldb.setTransactionSuccessful();//设置事务标志位true} finally {//结束事务:有两种情况:commit\rollback,事务提交或者回滚是由事务的标识决定的//事务为ture则提交,事务为flase则回滚,默认为falsesqldb.endTransaction();}}}⼗⼀、OtherPersonService.java 业务类源码:package com.example.service;import java.util.ArrayList;import java.util.List;import com.example.domain.Person;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class OtherPersonService {private DBOperateHelper dbOperateHelper;public OtherPersonService(Context context) {this.dbOperateHelper = new DBOperateHelper(context);}/*** 保存记录* @param person*/public void save(Person person){//得到数据库实例,⾥⾯封装了数据库操作⽅法SQLiteDatabase sqldb = dbOperateHelper.getWritableDatabase();//sqldb.execSQL("insert into person(name,phone) values('"+person.getName()+"','"+person.getPhone()+"')");//利⽤占位符可以避免注⼊,但是注意数组参与与占位符对应的字段要⼀⼀对应//sqldb.execSQL("insert into person(name,phone) values(?,?)",new Object[]{person.getName(),person.getPhone()});ContentValues values = new ContentValues();values.put("name", person.getName());values.put("phone", person.getPhone());values.put("amount", person.getAmount());//第⼀个参数是表名,第三个为字段值集合,第⼆个参数是空值字段,当第三个字段值集合为空时,系统会⾃动插⼊⼀条第⼆个参数为空的sql语句//否则当第三个参数为空时,如果第⼆个参数也为空,那么插⼊表就会找不到插⼊的字段信息,会报错sqldb.insert("person", "name", values );//关闭数据库sqldb.close();}/*** 删除记录* @param id*/public void delete(Integer id){SQLiteDatabase sqldb = dbOperateHelper.getWritableDatabase();//sqldb.execSQL("delete from person where personid=?",new Object[]{id});//第⼀个参数是表名,第⼆个是where后⾯的条件⽤占位符表⽰,第三个对应占位符为参数值sqldb.delete("person", "personid=?", new String[]{Integer.toString(id)});sqldb.close();}/*** 更新记录* @param person*/public void update(Person person){SQLiteDatabase sqldb = dbOperateHelper.getWritableDatabase();//sqldb.execSQL("update person set name=?,phone=? where personid=?",new Object[]{person.getName(),person.getPhone(),person.getId()});//第⼀个参数为表名,第⼆个是⼀个更新值集合,采⽤键值对的形式,每个更新的字段对应更新值//第三个参数是where后⾯条件字段⽤占位符标识,第四个参数是对应where占位符的值ContentValues values = new ContentValues();values.put("name", person.getName());values.put("phone", person.getPhone());values.put("amount", person.getAmount());sqldb.update("person", values , "personid=?", new String[]{person.getId().toString()});sqldb.close();}/*** 通过ID查询记录* @param id* @return*/public Person find(Integer id){/*** getWritableDatabase 与 getReadableDatabase 的区别:* getReadableDatabase会先返回getWritableDatabase(可写),如果调⽤getWritableDatabase失败* 则才会调⽤getReadableDatabase后续⽅法,使数据库只读* 当写⼊的数据超过数据库⼤⼩则调⽤getWritableDatabase会失败* 所以只读时则可以使⽤此⽅法,其它情况(只要不是超过数据库⼤⼩)也可以使⽤此⽅法*/SQLiteDatabase sqldb = dbOperateHelper.getReadableDatabase();//Cursor cursor = sqldb.rawQuery("select * from person where personid=?", new String[]{String.valueOf(id)});//第⼀个参数是表名;第⼆个参数是查询显⽰的字段,null时默认查询显⽰所有字段;//第三个参数是where查询条件占位符;第四个是占位符对应的值;//第五个参数是group by条件;第六个是having条件;第七个是order by条件Cursor cursor = sqldb.query("person", null, "personid=?", new String[]{id.toString()}, null, null, null);int personid;String name;String phone;int amount;Person person = null;if(cursor.moveToFirst()){personid = cursor.getInt(cursor.getColumnIndex("personid"));name = cursor.getString(cursor.getColumnIndex("name"));phone = cursor.getString(cursor.getColumnIndex("phone"));amount = cursor.getInt(cursor.getColumnIndex("amount"));person = new Person(personid,name,phone,amount);}cursor.close();return person;}/*** 返回指定长度记录,limit 3,5,适⽤于分页* @param offset 起始* @param maxResult 长度* @return*/public List<Person> getScrollData(int offset,int maxResult){SQLiteDatabase sqldb = dbOperateHelper.getReadableDatabase();//Cursor cursor = sqldb.rawQuery("select * from person order by personid asc limit ?,?", new String[]{String.valueOf(offset),String.valueOf(maxResult)}); //第⼀个参数是表名;第⼆个参数是查询显⽰的字段,null时默认查询显⽰所有字段;//第三个参数是where查询条件占位符;第四个是占位符对应的值;//第五个参数是group by条件;第六个是having条件;第七个是order by条件//第⼋个参数是limit ?,? 条件Cursor cursor = sqldb.query("person", null, null, null, null, null, "personid",offset+","+maxResult); int personid;String name;String phone;int amount;Person person = null;List<Person> persons = new ArrayList<Person>();while(cursor.moveToNext()){personid = cursor.getInt(cursor.getColumnIndex("personid"));name = cursor.getString(cursor.getColumnIndex("name"));phone = cursor.getString(cursor.getColumnIndex("phone"));amount = cursor.getInt(cursor.getColumnIndex("amount"));person = new Person(personid,name,phone,amount);persons.add(person);}cursor.close();return persons;}/*** 返回总记录数* @return*/public long getCount(){SQLiteDatabase sqldb = dbOperateHelper.getReadableDatabase();//Cursor cursor = sqldb.rawQuery("select count(*) from person", null);//第⼀个参数是表名;第⼆个参数是查询显⽰的字段,null时默认查询显⽰所有字段;//第三个参数是where查询条件占位符;第四个是占位符对应的值;//第五个参数是group by条件;第六个是having条件;第七个是order by条件Cursor cursor = sqldb.query("person", new String[]{"count(*)"}, null, null, null, null, null);//该查询语句值返回⼀条语句cursor.moveToFirst();long result = cursor.getLong(0);cursor.close();return result;}}⼗⼆、PersonServiceTest.java 单元测试类源码:package com.example.test;import java.util.List;import com.example.domain.Person;import com.example.service.DBOperateHelper;import com.example.service.PersonService;import android.test.AndroidTestCase;import android.util.Log;public class PersonServiceTest extends AndroidTestCase {public void testCreateDB() throws Exception{DBOperateHelper dbHelper = new DBOperateHelper(getContext());dbHelper.getWritableDatabase();}public void testSave() throws Exception{PersonService ps = new PersonService(getContext());for(int i=1;i<=100;i++){Person person = new Person();person.setName("我是"+i);person.setPhone(String.valueOf(Long.parseLong("188********")+i));ps.save(person);Log.i("PersonService",person.toString());}}public void testDelete() throws Exception{PersonService ps = new PersonService(getContext());ps.delete(10);}public void testUpdate() throws Exception{PersonService ps = new PersonService(getContext());ps.update(new Person(1,"xiaopang","188********",0));}public void testFind() throws Exception{PersonService ps = new PersonService(getContext());Person person = ps.find(1);Log.i("PersonService", person.toString());}public void testGetScrollData() throws Exception{PersonService ps = new PersonService(getContext());List<Person> persons = ps.getScrollData(3, 5);for(Person person:persons){Log.i("PersonService",person.toString());}}public void testGetCount() throws Exception{PersonService ps = new PersonService(getContext());Long count = ps.getCount();Log.i("PersonService",count.toString());}public void testUpdateAmount() throws Exception{PersonService ps = new PersonService(getContext());Person person1 = ps.find(1);Person person2 = ps.find(2);person1.setAmount(100);person2.setAmount(100);ps.update(person1);ps.update(person2);}public void testPayment() throws Exception{PersonService ps = new PersonService(getContext());ps.payment();}}⼗三、OtherPersonServiceTest 单元测试类源码:package com.example.test;import java.util.List;import com.example.domain.Person;import com.example.service.DBOperateHelper;import com.example.service.OtherPersonService;import android.test.AndroidTestCase;import android.util.Log;public class OtherPersonServiceTest extends AndroidTestCase {public void testCreateDB() throws Exception{DBOperateHelper dbHelper = new DBOperateHelper(getContext());dbHelper.getWritableDatabase();}public void testSave() throws Exception{OtherPersonService ps = new OtherPersonService(getContext());for(int i=1;i<=100;i++){Person person = new Person();person.setName("我是"+i);person.setPhone(String.valueOf(Long.parseLong("188********")+i));ps.save(person);Log.i("PersonService",person.toString());}}public void testDelete() throws Exception{OtherPersonService ps = new OtherPersonService(getContext());ps.delete(10);}public void testUpdate() throws Exception{OtherPersonService ps = new OtherPersonService(getContext());ps.update(new Person(1,"xiaopang","188********",0));}public void testFind() throws Exception{OtherPersonService ps = new OtherPersonService(getContext());Person person = ps.find(1);Log.i("PersonService", person.toString());}public void testGetScrollData() throws Exception{OtherPersonService ps = new OtherPersonService(getContext());List<Person> persons = ps.getScrollData(3, 5);for(Person person:persons){Log.i("PersonService",person.toString());}}public void testGetCount() throws Exception{OtherPersonService ps = new OtherPersonService(getContext());Long count = ps.getCount();Log.i("PersonService",count.toString());}}⼗四、注意事项以及相关知识点:1、掌握SQLite数据库如何创建数据库、建⽴表、维护字段等操作继承SQLiteOpenHelper类,构造函数调⽤⽗类构造函数创建数据库,利⽤onCreate创建表,利⽤onUpgrade更新表字段信息2、掌握SQLite数据库如何增、删、改、查以及分页取得SQLiteDatabase的实例,然后调⽤该实例的⽅法可以完成上述操作SQLiteDataBase提供两种操作上述功能的⽅式:⼀是直接调⽤execSQL书写sql语句,另⼀种是通过insert、update、delete、query等⽅法来传值来拼接sql,前⼀种适合熟练掌握sql 语句的3、对需要数据同步的处理请添加事务处理,熟悉事务的处理⽅式4、了解各个⽅法参数的意义以及传值5、掌握ListView显⽰后台数据的使⽤⽅法SimpleAdapter、SimpleCursorAdapter以及⾃定义适配器的使⽤,以及OnItemClickListener取值时各个适配器返回值的区别以及取值⽅法6、多学、多记、多练、多思,加油!更多关于Android相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家Android程序设计有所帮助。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Sqlite 实现简单的增删改查主界面:功能实现:1)增加数据:2)全部显示3)清除显示4)全部删除5):ID删除6)ID查询:7)ID更新:主要代码段:DBOpenHelper.javapackage com.chen.dao;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;public class DBOpenHelper extends SQLiteOpenHelper { private static final int VERSION=2;//版本private static final String DBNAME="user.db";//数据库名字//创建数据库public DBOpenHelper(Context context) {super(context, DBNAME, null, VERSION);}@Override/** 创建表*/public void onCreate(SQLiteDatabase db) {db.execSQL("create table if not exists u_user(_id integer primary key,name varchar(20),age integer,tall varchar(5))");}//版本被更新时执行@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}}UserDAO.javapackage com.chen.dao;import java.util.ArrayList;import java.util.List;import er;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;public class UserDAO {private DBOpenHelper helper;//写入,不然会是出错,是空指针public UserDAO(Context context){helper=new DBOpenHelper(context);}/*** 添加用户信息*/public void add(User user){SQLiteDatabase db=helper.getWritableDatabase();String sql="Insert into u_user(_id,name,age,tall) values(?,?,?,?)";db.execSQL(sql, new Object[]{user.getId(),user.getName(),user.getAge(),user.getTall()});db.close();}/*** 删除用户信息*/public void delete(Integer...id){if(id.length>0){StringBuffer sb=new StringBuffer();for(int i=0;i<id.length;i++){sb.append("?").append(",");}sb.deleteCharAt(sb.length()-1);SQLiteDatabase database=helper.getWritableDatabase();String sql="delete from u_user where _id in ("+sb+")";database.execSQL(sql, (Object[])id);}}/*** 删除表里的全部数据*/public void delelteall(){SQLiteDatabase database=helper.getWritableDatabase();String sql = "delete from u_user";database.execSQL(sql);}/*** 用户修改*/public void update(User user){SQLiteDatabase db=helper.getWritableDatabase();//写入数据库中注意!!!!不能放在外面String sql="update u_user set name=?,age=?,tall=? where _id=?";db.execSQL(sql, new Object[]{user.getName(),user.getAge(),user.getTall(),user.getId()});}/*** 查找用户信息*/public User find(int userid){SQLiteDatabase db=helper.getWritableDatabase();//写入数据库中注意!!!!不能放在外面String sql="select _id,name,age,tall from u_user where _id=?";Cursor cursor=db.rawQuery(sql, new String[]{String.valueOf(userid)});if(cursor.moveToNext()){return new User(cursor.getInt(cursor.getColumnIndex("_id")),cursor.getString(cursor.getColumnIndex("name")),cursor.getInt(cursor.getColumnIndex("age")),cursor.getString(cursor.getColumnIndex("tall")));}return null;}/*** 显示用户*/public Cursor select() {SQLiteDatabase db = helper.getReadableDatabase();Cursor cursor = db.query("u_user",null, null, null, null,null, "_id desc");return cursor;}}MainActivity.javapackage com.chen.database;/*** writer:ManMan*Email:*******************/import erDAO;import er;import android.app.Activity;import android.database.Cursor;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener{ private static final String TAG = "Add";private EditText edname,edage,edtall,id;private Button add,deleteshow,show,iddelete,idupdate,idshow,deleteall;private TextView tedatashow;private ListView datashow;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);edname = (EditText)findViewById(R.id.edname);edage = (EditText)findViewById(R.id.edage);edtall = (EditText)findViewById(R.id.edtall);id = (EditText)findViewById(R.id.id);tedatashow = (TextView)findViewById(R.id.tedatashow);datashow = (ListView)findViewById(R.id.datashow);add = (Button)findViewById(R.id.add);deleteshow = (Button)findViewById(R.id.deleteshow);show = (Button)findViewById(R.id.show);iddelete = (Button)findViewById(R.id.iddelete);idupdate = (Button)findViewById(R.id.idupdate);idshow = (Button)findViewById(R.id.idshow);deleteall = (Button)findViewById(R.id.deleteall);add.setOnClickListener(this);deleteshow.setOnClickListener(this);show.setOnClickListener(this);iddelete.setOnClickListener(this);idupdate.setOnClickListener(this);idshow.setOnClickListener(this);deleteall.setOnClickListener(this);}public void onClick(View v) {/** 添加数据*/if(v==add){if(!id.getText().toString().equals(null)&&!edname.getText().toString().equals(null)&&!edage .getText().toString().equals(null)&&!edtall.getText().toString().equals(null)){try{UserDAO userdao = new UserDAO(MainActivity.this);User user = new User(Integer.valueOf(id.getText().toString()), edname.getText().toString(),Integer.valueOf(edage.getText().toString()), edtall.getText().toString());userdao.add(user);Toast.makeText(MainActivity.this, "成功添加!", Toast.LENGTH_LONG).show();tedatashow.setText("新添数据为:"+"\n"+"ID:"+Integer.valueOf(id.getText().toString())+","+"姓名:"+edname.getText().toString()+","+"年龄:"+Integer.valueOf(edage.getText().toString())+","+"身高:"+edtall.getText().toString()+",");//设置为空edage.setText("");edname.setText("");edtall.setText("");id.setText("");}catch (Exception e) {Log.i(TAG, "出错了");Log.i(TAG, e.getMessage());}}else if(id.getText().toString().equals(null)){Toast.makeText(MainActivity.this, "ID不能为空!", Toast.LENGTH_LONG) .show();}}/** 清除显示*/if(v==deleteshow){tedatashow.setText("");}/** 全部显示*/if(v==show){try{UserDAO userdao = new UserDAO(MainActivity.this);Cursor cursor = userdao.select();/** 构建Listview适配器*/SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, yout.showuser, cursor, new String[]{"_id","name","age","tall" },newint[]{R.id.textView1,R.id.textView2,R.id.textView3,R.id.textView4});datashow.setAdapter(adapter);}catch (Exception f) {Log.e("err",f.getMessage());Log.e("err",null, f.getCause());Toast.makeText(MainActivity.this, "显示不了", Toast.LENGTH_LONG).show();}}/** ID删除*/if(v==iddelete){UserDAO userDAO=new UserDAO(MainActivity.this);//注意不能放在外面userDAO.delete(Integer.valueOf(id.getText().toString()));Toast.makeText(MainActivity.this, "您成功删除了"+Integer.valueOf(id.getText().toString()), Toast.LENGTH_LONG).show();id.setText("");}/** 全部删除*/if(v==deleteall){UserDAO userDAO=new UserDAO(MainActivity.this);//注意不能放在外面userDAO.delelteall();Toast.makeText(MainActivity.this, "您已经把数据全部删除了", Toast.LENGTH_LONG).show();}/** ID更新*/if(v==idupdate){UserDAO userDAO=new UserDAO(MainActivity.this);//注意不能放在外面User user=userDAO.find(Integer.valueOf(id.getText().toString()));user.setName(edname.getText().toString());user.setAge(Integer.valueOf(edage.getText().toString()));user.setTall(edtall.getText().toString());userDAO.update(user);Toast.makeText(MainActivity.this, "修改成功", Toast.LENGTH_LONG).show();}/** ID查询*/if(v==idshow){UserDAO userDAO=new UserDAO(MainActivity.this);//注意不能放在外面User user=userDAO.find(Integer.valueOf(id.getText().toString()));tedatashow.setText("ID:"+user.getId()+" "+"姓名:"+user.getName()+" "+"年龄:"+user.getAge()+" "+"身高"+user.getTall());}/***/}}User.javapackage com.chen.modl;public class User {private int id;private String name;private int age;private String tall;/** 构造方法*/public User(){super();}public User(int id,String name,int age,String tall){ this.id=id;=name;this.age=age;this.tall=tall;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getTall() {return tall;}public void setTall(String tall) {this.tall = tall;}//复写toString()方法进行查找public String toString(){return"id:"+id+"name:"+name+"age"+age+"tall"+tall;}}Main.xml<?xml version="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><LinearLayoutandroid:orientation="horizontal"android:layout_width="wrap_content"android:layout_height="wrap_content"><!--姓名 --><TextViewandroid:text="姓名:"android:layout_width="wrap_content"android:layout_height="wrap_content"/><EditTextandroid:id="@+id/edname"android:layout_height="wrap_content"android:layout_width="278dp"/></LinearLayout><LinearLayoutandroid:orientation="horizontal"android:layout_width="wrap_content"android:layout_height="wrap_content"><!--年龄 --><TextViewandroid:text="年龄:"android:layout_width="wrap_content"android:layout_height="wrap_content"/><EditTextandroid:id="@+id/edage"android:layout_width="278dp"/></LinearLayout><!--身高 --><LinearLayoutandroid:orientation="horizontal"android:layout_width="wrap_content"android:layout_height="wrap_content" ><TextViewandroid:text="身高:"android:layout_width="wrap_content"android:layout_height="wrap_content" /><EditTextandroid:id="@+id/edtall"android:layout_height="wrap_content"android:layout_width="278dp"/></LinearLayout><!--按钮 --><LinearLayoutandroid:orientation="horizontal"android:layout_width="wrap_content"android:layout_height="wrap_content" ><Buttonandroid:id="@+id/add"android:text="添加数据"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="3dip"/><Buttonandroid:id="@+id/show"android:text="全部显示"android:layout_width="wrap_content"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/deleteshow"android:text="清除显示"android:layout_width="wrap_content"/><Buttonandroid:id="@+id/deleteall"android:text="全部删除"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout><!--按钮 --><LinearLayoutandroid:orientation="horizontal"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:text="ID:"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="3dip"android:layout_weight="1"/><EditTextandroid:id="@+id/id"android:layout_width="75dip"android:layout_height="wrap_content"android:layout_marginLeft="3dip"android:layout_weight="2"/><Buttonandroid:id="@+id/iddelete"android:text="ID删除"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="5dip"android:layout_weight="1"/><Buttonandroid:id="@+id/idshow"android:text="ID查询"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"/><Buttonandroid:id="@+id/idupdate"android:text="ID更新"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"/></LinearLayout><TextViewandroid:text="数据库数据显示:"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/tedatashow"android:layout_width="fill_parent"android:layout_height="wrap_content"android:textSize="15dip"/><ListViewandroid:id="@+id/datashow"android:layout_width="fill_parent"android:layout_height="wrap_content"android:textSize="15dip"/></LinearLayout>。

相关文档
最新文档