Android数据库实验
- 格式:docx
- 大小:175.67 KB
- 文档页数:7
GDOU-B-11-112广东海洋大学学生实验报告书(学生用表)实验名称实验6:数据存储与访问课程名称移动编程课程号16242215x0学院(系) 数学与计算机专业计算机科学与技术班级计科1141班学生姓名学号实验地点科技楼425 实验日期2017.4.1一、实验目的1.熟悉在Android Studio开发环境下编写Android应用程序的流程;2.理解在Android Studio开发环境下进行用户界面设计的基本方法;3.掌握应用Android碎片控件Fragment开发适用于大屏幕的应用程序的方法。
4.掌握应用Android存储方法SharePreferences的应用方法。
二、实验内容在Android Studio开发环境下,使用Android的Fragment碎片控件、TextView文本标签控件、ListView列表控件、FrameLayout框架布局控件,利用SharePreferences存储方法,采用双页显示模式实现一个适用于大屏幕设备的简易新闻阅读器应用程序。
三、实验设备Android Studio四、实验结果用户界面布局设计采用了水平线性布局方式,分为左右两个碎片Fragment;其中,左侧为新闻标题列表子界面,右侧为新闻详细内容子界面。
当点击新闻标题列表中的某一标题时,右侧的Fragment将显示相应新闻标题的详细内容。
五、源代码主Activity的布局文件activity_main.xml的源代码<LinearLayout xmlns:android="/apk/res/android" xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent" android:paddingLeft="16dp"android:paddingRight="16dp"android:paddingTop="16dp"android:paddingBottom="16dp"android:orientation="horizontal"><FrameLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:id="@+id/fl_title"></FrameLayout><FrameLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="3"android:id="@+id/fl_content"></FrameLayout></LinearLayout>新闻标题列表的布局资源文件news_title_frag.xml的源代码<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><ListViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/news_title_list_view" /></LinearLayout>新闻标题列表子项的布局资源文件news_item.xml的源代码<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/news_title"android:layout_width="match_parent"android:layout_height="wrap_content"android:singleLine="true" //singleLine属性设置为true表示该TextView只能单行显示android:ellipsize="end" //ellipsize属性用于设定当文本内容超出控件宽度时,文本的缩略方式,这里设置为end表示在尾部进行缩略android:paddingLeft="10dp"android:paddingRight="10dp"android:paddingTop="15dp"android:paddingBottom="15dp"android:textSize="10sp" /> //textSize属性用于设置文本大小,推荐单位为sp(放大像素, scaled pixels)</LinearLayout>新闻内容的布局资源文件news_content_frag.xml的源代码<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/news_title"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:padding="10dp"android:textSize="15sp" /><ImageViewandroid:layout_width="match_parent"android:layout_height="1dp"android:scaleType="fitXY" // scaleType属性设置为fitXY,表示图像将填充满整个控件的大小android:src="@drawable/spilt_line"/><TextViewandroid:id="@+id/news_content"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:padding="15dp"android:textSize="10sp" /></LinearLayout><ImageViewandroid:layout_width="1dp"android:layout_height="match_parent"android:layout_alignParentLeft="true"android:scaleType="fitXY"android:src="@drawable/spilt_line_vertical"/></RelativeLayout>Main_Activity.javapackage com.example.liheng1.mynewsapplication;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.content.Context;import android.content.SharedPreferences;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import java.util.ArrayList;public class MainActivity extends ActionBarActivity {private ArrayList<News> newsArrayList = null;private FragmentManager fManager = null;public MainActivity() {}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);createNewsSPData(); //调用自定函数,若程序首次运行则生成新闻的 SharedPreferences数据文件// 读取新闻SP数据文件中的数据,以此生成新闻数组列表newsArrayListnewsArrayList = new ArrayList<News>();SharedPreferences SP_NewsCount = getSharedPreferences("NewsCount", Context.MODE_PRIVATE);int newsCount = SP_NewsCount.getInt("Count",0);for (int i = 1; i <= newsCount; i++) {String FileName = "News"; // 新闻的文件名前缀SharedPreferences SP_News = getSharedPreferences(FileName + i, Context.MODE_PRIVATE);News news = new News();news.setTitle(SP_News.getString("NewsTitle",null));news.setontent(SP_News.getString("NewsContent", null));newsArrayList.add(news);}fManager = getFragmentManager();NewsTitleFragment ntFragment = new NewsTitleFragment(fManager, newsArrayList);FragmentTransaction ft = fManager.beginTransaction();//显示新闻标题:将显示新闻标题的Fragment替换掉对应位置处的FrameLayout控件ft.replace(R.id.fl_title, ntFragment);mit();}@Overrideprotected void onStop() {super.onStop();createRunRecordSPData(); //调用自定函数,生成程序首次运行记录的 SharedPreferences数据文件}private void createNewsSPData() {String RUN_RECORD = "AppRunRecord"; // 记录 App是否首次运行的SP文件的文件名String FIRST_RUN = "FirstRun"; // 首次运行的标签名String NEWS_COUNT = "NewsCount"; // 记录新闻数量的SP文件的文件名String COUNT = "Count"; // 新闻数量的标签名String FileName = "News"; // 新闻的文件名前缀SharedPreferences SP_RunRecord = getSharedPreferences(RUN_RECORD, Context.MODE_PRIVATE);if(SP_RunRecord.getBoolean(FIRST_RUN,true)){int newsCount = 20;for(int i=1;i<=newsCount;i++) {SharedPreferences SP_News = getSharedPreferences(FileName+i,Context.MODE_PRIVATE);SharedPreferences.Editor editor_News = SP_News.edit();String newsTitle = "新闻标题" + i + ":若能正常显示此标题,则说明程序已经成功一半了";String newsContent = " 这是新闻标题 " + i + " 所对应的新闻内容,内容如下:" +"Fragment很多时候都是在平板应用开发中使用的,主要是为了解决屏幕空间" +"不能充分利用的问题。
安卓实验报告Android是目前全球最为流行的操作系统之一,其强大的应用程序生态系统和广泛的设备兼容性使得安卓成为开发者和用户的首选。
本文将介绍我在安卓实验中进行的一系列任务和实验结果。
实验一:安装开发环境在进行安卓开发之前,我们首先需要安装必要的开发环境。
我使用的是Android Studio,这是谷歌官方提供的开发工具,具有强大的功能和友好的用户界面。
通过安装Android Studio,我成功搭建了安卓开发环境,并进行了一些基本的配置。
实验二:创建第一个安卓应用程序根据老师的指导,我按照步骤成功创建了我的第一个安卓应用程序。
我选择了一个简单的计算器应用程序作为开始,它可以实现基本的加法和减法功能。
通过这个实验,我学会了使用Android Studio的界面设计工具和编写基本的Java代码。
实验三:UI设计和布局在这个实验中,我学习了安卓应用程序的用户界面设计和布局。
我使用了安卓提供的各种布局方式,如线性布局、相对布局和帧布局等,来设计和展示应用程序的不同界面。
通过这个实验,我对安卓界面设计的原则和技巧有了更深入的理解。
实验四:应用程序调试与测试在开发过程中,调试和测试是非常重要的环节。
通过Android Studio提供的调试工具,我能够针对应用程序中的问题进行定位和修复。
我还学会了使用模拟器和真机进行应用程序的测试,以确保应用程序的功能和稳定性。
实验五:数据库操作在这个实验中,我学习了如何在安卓应用程序中使用数据库。
我使用了SQLite数据库来存储和管理应用程序的数据。
通过编写SQL语句,我能够进行数据的插入、查询、更新和删除等操作。
这为我今后的应用程序开发提供了非常有用的技能。
总结:。
android应用开发实验报告Android应用开发实验报告引言:随着智能手机的普及,移动应用的需求也越来越大。
作为目前最主流的移动操作系统之一,Android平台的应用开发变得越来越重要。
本实验报告将介绍我在Android应用开发实验中所学到的知识和经验,以及我开发的一个简单应用的过程和成果。
一、实验背景移动应用开发已经成为互联网行业的热门方向之一。
Android平台作为全球最大的移动操作系统之一,具有广泛的用户基础和开放的生态系统,因此学习和掌握Android应用开发技术对于未来的职业发展非常有帮助。
二、实验目的通过本次实验,我希望能够掌握Android应用开发的基本流程和技术,包括应用的界面设计、交互逻辑的实现以及与后台服务的通信等。
同时,我也希望能够培养自己的创新思维和解决问题的能力。
三、实验过程1. 环境搭建在开始实验之前,我首先需要搭建好Android开发环境。
我下载并安装了Android Studio,这是官方推荐的Android开发工具,提供了丰富的开发工具和模拟器来辅助开发。
2. 学习基础知识在进入实际开发之前,我花了一些时间学习Android应用开发的基础知识,包括Java编程语言、XML布局文件的编写以及Android应用的生命周期等。
这些基础知识为我后续的实际开发打下了坚实的基础。
3. 设计应用界面在设计应用界面时,我首先考虑了用户的使用习惯和界面的美观度。
我使用Android Studio提供的可视化界面编辑器,通过拖拽和调整组件的位置和属性,设计出了一个简洁而实用的界面。
4. 实现交互逻辑应用的交互逻辑是实现应用功能的核心部分。
我使用Java语言编写了一些代码,实现了用户与应用之间的交互逻辑。
例如,当用户点击一个按钮时,应用会执行相应的操作,并显示结果给用户。
5. 与后台服务通信现在的应用很少能够独立完成所有功能,往往需要与后台服务进行通信。
我使用了Android提供的网络通信库,编写了一些代码,实现了与后台服务的数据交互。
安卓数据存储实验报告一、实验背景在当今移动应用开发中,数据存储是一个至关重要的环节。
安卓系统提供了多种数据存储方式,以满足不同应用场景和数据需求。
为了深入了解安卓数据存储的机制和性能,进行了本次实验。
二、实验目的本次实验的主要目的是:1、比较安卓系统中不同数据存储方式(如内部存储、外部存储、SQLite 数据库、SharedPreferences 等)的性能和特点。
2、探究在不同数据量和操作频繁程度下,各种存储方式的效率和稳定性。
3、为实际应用开发中选择合适的数据存储方式提供依据。
三、实验环境1、操作系统:Android 112、开发工具:Android Studio 423、测试设备:_____ 手机四、实验内容(一)内部存储内部存储是应用私有存储空间,其他应用无法直接访问。
在实验中,通过文件输入输出流进行数据的读写操作。
创建了文本文件来存储简单的字符串数据,并进行了多次读写测试。
(二)外部存储外部存储分为公共外部存储和私有外部存储。
公共外部存储可被其他应用和用户访问,私有外部存储则只有本应用可以访问。
测试了在不同外部存储区域写入和读取大文件的性能。
(三)SQLite 数据库SQLite 是安卓中常用的轻量级数据库。
创建了数据库表,进行了数据的插入、查询、更新和删除操作,同时观察了数据库操作的时间消耗和资源占用情况。
(四)SharedPreferencesSharedPreferences 适用于存储少量的键值对数据。
对其进行了读写操作,并测试了在多线程环境下的并发访问性能。
五、实验步骤1、准备测试数据,包括不同大小和类型的数据,如文本、图片等。
2、分别使用上述四种数据存储方式对测试数据进行存储和读取操作。
3、记录每次操作的时间、内存使用等性能指标。
4、对相同的数据量和操作,改变操作的频繁程度,重复实验步骤2 和 3。
六、实验结果与分析(一)内部存储在小数据量和操作不频繁的情况下,内部存储的读写速度较快。
在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()方法,可以执行插入数据的操作。
android开发实验报告总结《android 开发实验报告总结》在当今科技飞速发展的时代,移动应用开发成为了热门领域之一,其中 Android 开发更是备受关注。
通过本次 Android 开发实验,我获得了丰富的实践经验和深刻的技术理解。
接下来,我将详细阐述这次实验的各个方面。
实验背景与目标随着智能手机的普及,Android 操作系统占据了相当大的市场份额。
本次实验的目标是通过实际开发一个简单的 Android 应用程序,深入了解 Android 开发的流程、技术架构以及相关工具的使用,从而提高自己的编程能力和解决问题的能力。
实验环境与工具在实验过程中,我们使用了 Android Studio 作为主要的开发工具。
Android Studio 提供了丰富的功能,包括代码编辑、调试、版本控制等,极大地提高了开发效率。
同时,还需要安装 Java 开发环境(JDK)以及 Android SDK 等必要的组件。
实验内容与步骤首先是项目创建。
在Android Studio 中,通过选择合适的项目模板,设定项目名称、包名等基本信息,创建了一个初始的 Android 项目框架。
接着是界面设计。
利用 XML 布局文件,定义了应用的界面元素,如按钮、文本框、列表等,并通过设置属性来调整它们的外观和位置。
同时,使用了 ConstraintLayout 等布局管理器,实现了灵活且美观的界面布局。
然后是功能实现。
通过编写 Java 代码,实现了应用的各种功能逻辑。
例如,点击按钮触发相应的事件处理,从网络获取数据并展示在界面上,以及与本地数据库进行交互等。
在数据存储方面,学习和使用了 SharedPreferences 来保存简单的配置信息,以及 SQLite 数据库来存储复杂的数据结构。
在网络通信方面,使用了 HttpURLConnection 或者 Volley 等库来发送 HTTP 请求,获取服务器端的数据。
调试与测试在开发过程中,不可避免会遇到各种问题。
第1篇一、实验目的1. 熟悉安卓开发环境及工具的使用。
2. 掌握安卓应用程序的基本开发流程。
3. 学习安卓界面设计、布局、事件处理等基本技能。
4. 提高编程能力及团队协作能力。
二、实验环境1. 操作系统:Windows 102. 开发工具:Android Studio3.53. 编程语言:Java4. 虚拟机:Android 9.0 (Pie)三、实验内容1. 创建安卓项目2. 设计界面3. 编写功能代码4. 测试与调试四、实验步骤1. 创建安卓项目(1)打开Android Studio,点击“Start a new Android Studio project”;(2)选择“Empty Activity”模板,点击“Next”;(3)输入项目名称、保存位置等信息,点击“Finish”;(4)在项目目录中,找到MainActivity.java文件,修改其中的代码,以实现特定功能。
2. 设计界面(1)打开res/layout/activity_main.xml文件;(2)使用布局编辑器设计界面,添加控件(如Button、EditText等);(3)设置控件的属性(如文本、颜色、大小等)。
3. 编写功能代码(1)在MainActivity.java文件中,编写代码实现功能;(2)例如,编写按钮点击事件,实现数据计算、页面跳转等操作。
4. 测试与调试(1)在Android Studio中,点击“Run”按钮,启动模拟器或连接真机进行测试;(2)观察程序运行效果,如有问题,进行调试;(3)根据需要,修改代码,直至程序正常运行。
五、实验结果与分析1. 实验结果本次实验成功创建了一个安卓应用程序,实现了简单的功能,如按钮点击事件、页面跳转等。
2. 实验分析(1)在创建安卓项目时,熟悉了Android Studio的使用,掌握了项目结构及文件管理方法;(2)在设计界面时,学会了使用布局编辑器,掌握了常用控件的属性设置;(3)在编写功能代码时,学习了Java编程语言的基本语法,掌握了事件处理及页面跳转等操作;(4)在测试与调试过程中,提高了问题定位及解决能力。
Android实验一实验报告一、实验目的本次 Android 实验的主要目的是让我们熟悉 Android 开发环境的搭建,并通过创建一个简单的 Android 应用程序,初步了解 Android 应用的基本架构和开发流程。
二、实验环境1、操作系统:Windows 102、 Android Studio:版本 4123、 JDK:版本 18三、实验内容及步骤(一)Android 开发环境搭建1、下载并安装 JDK,配置好环境变量。
2、下载 Android Studio 安装包,按照安装向导进行安装。
3、启动 Android Studio,进行一些初始设置,如选择主题、安装必要的组件等。
(二)创建 Android 项目1、打开 Android Studio,选择“Start a new Android Studio project”。
2、填写项目名称(如“MyFirstAndroidApp”)、项目位置、包名等信息。
3、选择应用的最低支持 Android 版本和目标 Android 版本。
4、选择项目模板,这里我们选择“Empty Activity”。
(三)项目结构介绍1、打开项目后,我们可以看到项目的结构。
主要包括“app”目录、“gradle”目录等。
2、“app”目录下包含了应用的代码、资源文件等。
其中,“java”目录存放 Java 代码,“res”目录存放资源文件,如布局文件(layout)、字符串资源(values)、图片资源(drawable)等。
(四)编写代码1、打开“MainActivityjava”文件,这是应用的主活动类。
2、在“onCreate”方法中,我们可以进行一些初始化操作。
(五)设计布局1、打开“activity_mainxml”文件,这是应用的主布局文件。
2、使用 XML 标记语言来设计界面布局,如添加 TextView、Button 等控件。
(六)运行应用1、连接真机或使用模拟器。
实验报告实验项目:Android数据库实验一、实验目的1、理解Android中常用的数据存储方式及各自特点;2、掌握Sqlite数据库的相关操作;3、掌握编程访问Sqlite数据库的方法;二、实验原理1、数据存储方式:SharedPreferences、文件、数据库等;2、Sqlite数据库访问;三、实验步骤、数据记录及处理1、手动操作Sqlite数据库;2、编程访问Sqlite数据库,实验用户登录、注册等基本功能;1.定义数据库MySQLiteOpenHelper继承父类SQLiteOpenHelper写基本操作要用的方法并建立相关的类。
相关代码如下:MySQLiteOpenHelper.java:public class MySQLiteOpenHelper extends SQLiteOpenHelper {public static final String DATABASE_NAME = "S.db";public static final String TABLE_NAME = "S_table";public static final String COL_1 = "ID";public static final String COL_2 = "NAME";public static final String COL_3 = "PASSWORD";public MySQLiteOpenHelper(Context contect) {super(contect, DATABASE_NAME, null, 1);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("CREATE TABLE " + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,PASSWORD TEXT)");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);}public Integer deleteData(String id) {SQLiteDatabase db = this.getWritableDatabase();int i = db.delete(TABLE_NAME, "ID=?", new String[]{id});return i;}public boolean find(User userpeople){SQLiteDatabase db = this.getWritableDatabase();User[] user =queryAllData();if(user==null)return false;for(User i:user){if(.equals()&& i.password.equals(userpeople.password)){ return true;}}return false;}public User[] queryAllData() {SQLiteDatabase db = this.getWritableDatabase();Cursor results = db.query(TABLE_NAME, new String[] { COL_1,COL_2,COL_3},null,null,null,null,null);return ConvertToPeople(results);}private User[] ConvertToPeople(Cursor cursor){int resultCounts = cursor.getCount();if (resultCounts == 0 || !cursor.moveToFirst()){return null;}User[] user = new User[resultCounts];for (int i = 0 ; i<resultCounts; i++){user[i] = new User();user[i].name = cursor.getString(cursor.getColumnIndex(COL_2));user[i].password = cursor.getString(cursor.getColumnIndex(COL_3));cursor.moveToNext();}return user;}public boolean insertData(String name, String password) {SQLiteDatabase db = this.getWritableDatabase(); //打开数据库ContentValues contentValues = new ContentValues();contentValues.put(COL_2, name);contentValues.put(COL_3, password);long result = db.insert(TABLE_NAME, null, contentValues);db.close();if (result == -1) {return false;} else {return true;}}}User.java:public class User {private static final long serialVersionUID = 1L;public String name;public String password;public User(){}public User(String name, String password) {super(); = name;this.password = password;}public String getName() {return name;}public void setName(String name) { = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User [name=" + name + ", password=" + password + "]";}}用cmd命令查看在注册界面输入的用户名和密码已经被正确的存入数据库中,操作如下图:2.实现登陆注册的验证。
验证界面的数据已经存入数据库中,要完成验证我们需要把用户在登陆界面输入的用户名和密码获取到并和数据库中的数据进行比对,结果会有两种情况:1.信息完全匹配,界面下方显示Toast登陆成功;2.信息有至少一条不匹配,界面下方显示Toast登陆失败;相关代码如下:RegisterActivity.java://定义数据库需要控件(INSERT)myDb = new MySQLiteOpenHelper(this);textName=(EditText)findViewById(R.id.ideText3);textPassword=(EditText)findViewById(R.id.ideText4);Button button4 = (Button)findViewById(R.id.button4);button4.setOnClickListener(new View .OnClickListener() {@Overridepublic void onClick(View v) {ClickMe();}});//添加数据入数据库(INSERT)private void ClickMe() {String new_name = textName.getText().toString();String new_password = textPassword.getText().toString();Boolean result = myDb.insertData(new_name,new_password);if(result == true) {Toast.makeText(this, "Data Inserted Sucessfully", Toast.LENGTH_SHORT).show();}else{Toast.makeText(this, "Data Inserted Failed", Toast.LENGTH_SHORT).show();}}MainActivity.java://登陆Button button1 = (Button) findViewById(R.id.button1);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//点击登录按钮_name = (EditText) findViewById(R.id.et1);_password = (EditText) findViewById(R.id.et2);User user = new User(_name.getText().toString(),_password.getText().toString());//String log_name = _name.getText().toString();//String log_password = _password.getText().toString();if(myDb.find(user)==true)Toast.makeText(getApplicationContext(), "登录成功",Toast.LENGTH_SHORT).show();else Toast.makeText(getApplicationContext(), "登录失败",Toast.LENGTH_SHORT).show();}});//验证登录public boolean login(String username,String password) {SQLiteDatabase db = myDb.getWritableDatabase();String sql = "select * from userData where name=? and password=?";Cursor cursor = db.rawQuery(sql, new String[] {username, password});if (cursor.moveToFirst()) {cursor.close();return true;}return false;}虚拟机运行效果:。