在上一篇博客中介绍了在android中使用SQLite数据库,上一篇博客中是直接使用SQL语句操作SQLite数据库,这样会带来一个非常大的问题,万一SQL语句书写错误,编译时程序并不会报错,在运行时发现错误时,又重新回来修改代码,这样会大大降低开发效率,为了解决这个问题Android中封装了一些可以直接操作SQLite的API,并不需要写SQL语句

接下来通过一个实例介绍使用Android中封装好的API操作SQLite数据库,实例中实现的效果和上一篇博客在android中使用SQLite数据库中实现的效果一样,只是将实现方式由使用SQL语句实现改成了使用API,只有一个地方不同,就是点击Select按钮后会显示数据库中的所有的学生的信息,演示效果如下



实现方式,使用Android Studio创建一个Android 工程

1、修改activity_main.xml文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.fyt.databasedemo1.MainActivity"    android:orientation="vertical">    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="createDatabase"        android:textSize="30dp"        android:onClick="createDatabase"/>    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="Insert"        android:textSize="30dp"        android:onClick="Insert"/>    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="Delete"        android:textSize="30dp"        android:onClick="Delete"/>    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="Update"        android:textSize="30dp"        android:onClick="Update"/>    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="Select"        android:textSize="30dp"        android:onClick="Select"/></LinearLayout>


2、在layout文件夹中新建一个activity_second.xml文件作为第二个界面,学生信息展示界面的布局文件

<?xml version="1.0" encoding="utf-8"?><ScrollView    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent">    <LinearLayout        android:id="@+id/ll"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical"        tools:context=".MainActivity">    </LinearLayout></ScrollView>

3、新建一个Student类用于处理学生信息

package com.fyt.databasedemo1;import android.util.Log;//创建一个学生类public class Student {    //学生的姓名    private String Name;    //学生的年龄    private  int Age;    //学生的学号    private int No;    //学生的C++成绩    private float Cpp;    //学生的数学成绩    private float Math;    //学生的英语成绩    private  float English;    //无参构造方法    public Student() {    }    //带参数的构造方法    public Student(String name, int age, int no, float cpp, float math, float english) {        Name = name;        Age = age;        No = no;        Cpp = cpp;        Math = math;        English = english;    }    public String getName() {        return Name;    }    public void setName(String name) {        Name = name;    }    public int getAge() {        return Age;    }    public void setAge(int age) {        Age = age;    }    public int getNo() {        return No;    }    public void setNo(int no) {        No = no;    }    public float getCpp() {        return Cpp;    }    public void setCpp(float cpp) {        Cpp = cpp;    }    public float getMath() {        return Math;    }    public void setMath(float math) {        Math = math;    }    public float getEnglish() {        return English;    }    public void setEnglish(float english) {        English = english;    }    @Override    public String toString() {        String str = getName() + ", " + getAge() + ", "                + getNo() + ", " + getCpp() + ", "                + getMath() + ", " + getEnglish();        return str;    }}


4、新建一个抽象类 SQLiteOpenHelper的实现类MyOpenHelper,MyOpenHelper中的代码如下

package com.fyt.databasedemo1;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;//创建一个抽象类SQLiteOpenHelper的实现类MyOpenHelperpublic class MyOpenHelper extends SQLiteOpenHelper {    /**     * MyOpenHelper构造方法     * @param context 上下文     * @param name 数据库文件的名字     * @param factory 游标工厂(结果集)     * @param version 数据库的版本号(用于升级)     */    public MyOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {        super(context, name, factory, version);    }    //创建数据库时,调用此方法    @Override    public void onCreate(SQLiteDatabase db) {        Log.d("MainActivity", "数据库创建成功");        //创建一个学生表        db.execSQL("create table student(_id integer primary key autoincrement, name char(10), age integer, no integer, cpp float, math float, english float)");    }    //数据库升级时调用此方法    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        Log.d("MainActivity", "数据库升级成功");    }}

5、修改MainActivity.java中的代码

package com.fyt.databasedemo1;import android.app.Activity;import android.content.ContentValues;import android.content.Intent;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.View;import java.util.ArrayList;import java.util.List;public class MainActivity extends Activity {    //用于创建帮助器对象    private MyOpenHelper oh;    //用于创建数据库对象    private SQLiteDatabase db;    List<Student> studentsList;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //创建集合,用来保存学生的信息        studentsList = new ArrayList<Student>();        //创建学生对象        Student st1 = new Student("刘得意", 19, 1001, 60, 98, 75);        Student st2 = new Student("王锐", 20, 1002, 63, 90, 96);        Student st3 = new Student("何煜中", 19, 1003, 90, 73, 82);        Student st4 = new Student("王磊", 21, 1004, 87, 86, 92);        Student st5 = new Student("冯松", 19, 1005, 89, 98, 83);        Student st6 = new Student("裴培", 20, 1006, 75, 82, 91);        Student st7 = new Student("马骁", 19, 1007, 62, 67, 90);        Student st8 = new Student("马婧", 20, 1008, 98, 84, 87);        Student st9 = new Student("周俊升", 19, 1009, 57, 68, 96);        Student st10 = new Student("贺祺", 21, 1010, 61, 96, 72);        //将学生的信息添加到集合中        studentsList.add(st1);        studentsList.add(st2);        studentsList.add(st3);        studentsList.add(st4);        studentsList.add(st5);        studentsList.add(st6);        studentsList.add(st7);        studentsList.add(st8);        studentsList.add(st9);        studentsList.add(st10);    }    //创建数据库    public void createDatabase(View view) {        //创建帮助器对象        oh = new MyOpenHelper(this, "people.db", null, 1);        //创建数据库对象        db = oh.getWritableDatabase();    }    //向数据库中添加数据    public void Insert(View view) {        //使用增强for遍历集合中的学生的信息        for(Student student : studentsList) {            //将需要插入的数据            ContentValues values = new ContentValues();            values.put("name", student.getName());            values.put("age", student.getAge());            values.put("no", student.getNo());            values.put("cpp", student.getCpp());            values.put("math", student.getMath());            values.put("english", student.getEnglish());            db.insert("student", null, values);        }    }    //删除数据库中的数据    public void Delete(View view) {        //删除姓名为"刘得意"的学生的信息        db.delete("student", "name = ?", new String[]{"刘得意"});    }    //修改数据库中的数据    public void Update(View view) {        //将数据库中所有人的学号减少1        db.execSQL("update student set no = no - 1");    }    //查询数据库中的数据    public void Select(View view) {        //关闭数据库        db.close();        Intent intent = new Intent(MainActivity.this, SecondActivity.class);        startActivity(intent);    }}

6、新建一个SecondActivity.java文件,用于实现第二个界面的逻辑

package com.fyt.databasedemo1;import android.app.Activity;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.util.Log;import android.widget.LinearLayout;import android.widget.TextView;import java.util.ArrayList;import java.util.List;public class SecondActivity extends Activity {    private MyOpenHelper oh;    private SQLiteDatabase db;    private List<Student> studentList;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //加载布局文件        setContentView(R.layout.activity_second);        //创建集合,保存学生的信息        studentList = new ArrayList<Student>();        //创建数据库        createDatabase();        //从数据库中读取数据        readDataFromDatabase();        //显示学生的信息        showStudentData();    }    //创建数据库    public void createDatabase() {        //创建帮助器对象        oh = new MyOpenHelper(this, "people.db", null, 1);        //创建数据库对象        db = oh.getWritableDatabase();    }    //从数据库中读取数据    public void readDataFromDatabase() {        Cursor cursor = db.query("student", null, null, null, null, null, null, null);        while(cursor.moveToNext())        {            String name = cursor.getString(cursor.getColumnIndex("name"));            int age = cursor.getInt(cursor.getColumnIndex("age"));            int no = cursor.getInt(cursor.getColumnIndex("no"));            float cpp = cursor.getFloat(cursor.getColumnIndex("cpp"));            float math = cursor.getFloat(cursor.getColumnIndex("math"));            float english = cursor.getFloat(cursor.getColumnIndex("english"));            Log.d("MainActivity", name + ", " + age + ", " + no + ", "            + cpp + ", " + math + ", " + english);            //将学生的信息添加到集合中           Student student = new Student(name, age, no, cpp, math, english);           studentList.add(student);        }    }    //显示学生的信息    public void showStudentData() {        //获得布局文件上的线性布局        LinearLayout ll = (LinearLayout) findViewById(R.id.ll);        //把数据显示至屏幕        for (Student student : studentList)        {            //1.集合中每有一条元素,就new一个textView            TextView tv = new TextView(this);            //2.把人物的信息设置为文本框的内容            tv.setText(student.toString());            //设置字体的大小为18            tv.setTextSize(18);            //把textView设置为线性布局的子节点            ll.addView(tv);        }    }}

最后将SecondActivity这个活动添加到配置文件中的Application下面

  <activity android:name=".SecondActivity">        </activity>

更多相关文章

  1. [android]获取各应用的启动次数和运行时间
  2. 海神平台Crash监控SDK(Android)开发经验总结
  3. 谷歌、摩托罗拉被要求向苹果提供有关Android的信息
  4. Android(安卓)数据存储 利用SQLiteDatabase实现简单的学生管理
  5. 如何找到Android(安卓)app启动activity和页面元素信息
  6. 在SQL数据库保存数据
  7. Android(安卓)取得应用程序的启动次数和运行时间等信息
  8. android利用数据库实现搜索联想功能
  9. 第二届 Android(安卓)应用开发中国大学生挑战赛开始

随机推荐

  1. android 之 adb shell的使用
  2. H5判断 移动端 是android还是ios
  3. Eclipse 连接 MUMU模拟器
  4. AndroidR系统启动详细分析-学习笔记
  5. Activity配置属性
  6. C盘瘦身
  7. android 学习笔记: manifest.xml中声明多
  8. Android(安卓)屏幕适配解决方案
  9. 如何启用Google Play App签名
  10. http://www.jb51.net/list/list_233_2.ht