《移动终端软件开发技术》第六周作业:数据读写和数据库

/ 0评 / 0

1.应用程序一般允许用户自己定义配置信息,如界面背景颜色、字体大小和字体颜色等,尝试使用SharedPreferences保存用户的自定义配置信息,并在程序启动时自动加载这些自定义的配置信息。

2.尝试把第1题的用户自己定义配置信息,以INI文件的形式保存在内部存储器上。

3.使用代码建库的方式,创建名为test.db的数据库,并建立staff数据表,表内的属性值如下表所示:

属性数据类型说明
_idinteger主键
nametext姓名
sextext性别
departmenttext所在部门
salaryfloat工资

4.利用第3题所建立的数据库和staff表,为程序提供添加、删除和更新等功能,并尝试将下表中的数据添加到staff表中。

_idnamesexdepartmentsalary
1Tommalecomputer5400
2Einsteinmalecomputer4800
3Lilyfemale1.685000
4Warnermale
5Napoleonmale

布局

<?xml version="1.0" encoding="utf-8"?>
<GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:columnCount="4"
    >

    <TextView
        android:layout_columnSpan="1"
        android:text="背景颜色"/>

    <EditText
        android:layout_columnSpan="3"
        android:layout_gravity="fill_horizontal"
        android:id="@+id/bgc"/>

    <TextView
        android:layout_columnSpan="1"
        android:text="字体大小"/>

    <EditText
        android:layout_columnSpan="3"
        android:layout_gravity="fill_horizontal"
        android:id="@+id/size"/>

    <TextView
        android:layout_columnSpan="1"
        android:text="字体颜色"/>

    <EditText
        android:layout_columnSpan="3"
        android:layout_gravity="fill_horizontal"
        android:id="@+id/color"/>


</GridLayout>

MainActivity.java

package bupt.hkt2017211874.lab06_1;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.EditText;


//使用SharedPreferences保存数据
public class MainActivity extends Activity {

    public static int mode= MODE_PRIVATE;;
    public final static String name="settings";

    EditText text1;
    EditText text2;
    EditText text3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    //读取数据
    @Override
    protected void onStart(){
        super.onStart();
        text1=(EditText) findViewById(R.id.bgc);
        text2=(EditText) findViewById(R.id.size);
        text3=(EditText) findViewById(R.id.color);
        SharedPreferences sp=getSharedPreferences(name,mode);
        String value1=sp.getString("背景颜色","默认颜色");
        String value2=String.valueOf(sp.getInt("字体大小",1));
        String value3=sp.getString("字体颜色","默认颜色");
        text1.setText(value1);
        text2.setText(value2);
        text3.setText(value3);
    }

    //写数据
    @Override
    protected void onStop(){
        super.onStop();
        text1=(EditText) findViewById(R.id.bgc);
        text2=(EditText) findViewById(R.id.size);
        text3=(EditText) findViewById(R.id.color);
        SharedPreferences sp=getSharedPreferences(name,mode);
        SharedPreferences.Editor editor=sp.edit();
        String value1=text1.getText().toString();
        int value2=Integer.parseInt(text2.getText().toString());
        String value3=text3.getText().toString();
        editor.putString("背景颜色",value1);
        editor.putInt("字体大小",value2);
        editor.putString("字体颜色",value3);
        editor.commit();
    }
}

出现了一点报错,意思是MODE_WORLD_READABLE不再适用了

java.lang.SecurityException: MODE_WORLD_READABLE no longer supported
        at android.app.ContextImpl.checkMode(ContextImpl.java:2659)
        at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:465)
        at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:455)

空指针报错

E/Perf: Fail to get file list bupt.hkt2017211874.lab06_1
E/Perf: getFolderSize() : Exception_1 = java.lang.NullPointerException: Attempt to get length of null array
E/Perf: Fail to get file list bupt.hkt2017211874.lab06_1
E/Perf: getFolderSize() : Exception_1 = java.lang.NullPointerException: Attempt to get length of null array

这个问题至今没有解决,不知道为什么部门的属性就是无法创建,没有占用关键词,维度是部门属性创建不了,工资属性都没问题。

E/SQLiteLog: (1) table people has no column named depart
E/SQLiteDatabase: Error inserting depart=3 salary=4.0 sex=2 name=1 from {P:17110;U:10035}
    android.database.sqlite.SQLiteException: table people has no column named depart (code 1 SQLITE_ERROR): , while compiling: INSERT INTO people(depart,salary,sex,name) VALUES (?,?,?,?)
        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:986)
        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:593)
        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:590)

实验失败~~~~~

发表评论

电子邮件地址不会被公开。 必填项已用*标注