Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 数据未保存在Sqlite数据库中_Android_Sqlite - Fatal编程技术网

Android 数据未保存在Sqlite数据库中

Android 数据未保存在Sqlite数据库中,android,sqlite,Android,Sqlite,我想将城市对象保存在数据库中。我将对象信息保存在哈希表中,并使用内容值将其插入数据库中。在终端中可以看到,表是在数据库中创建的,但在选择时没有显示任何内容,也没有保存数据。 可以从终端的SQL查询中看到。 在主活动中,保存函数由城市对象调用,城市对象应保存在数据库中。 请告知我哪里做错了?请帮忙 这是终点站 generic_x86_arm:/data/data/com.example.worldclocktest/databases # sqlite3 Cities.db SQLite vers

我想将城市对象保存在数据库中。我将对象信息保存在哈希表中,并使用内容值将其插入数据库中。在终端中可以看到,表是在数据库中创建的,但在选择时没有显示任何内容,也没有保存数据。 可以从终端的SQL查询中看到。 在主活动中,保存函数由城市对象调用,城市对象应保存在数据库中。 请告知我哪里做错了?请帮忙

这是终点站

generic_x86_arm:/data/data/com.example.worldclocktest/databases # sqlite3 Cities.db
SQLite version 3.28.0 2020-05-06 18:46:38
Enter ".help" for usage hints.
sqlite> .tables
City              android_metadata
sqlite> .schema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE City (Id TEXT PRIMARY KEY, Name TEXT,Time TEXT,Important INTEGER);
sqlite> SELECT * FROM City
   ...>
下面是实现接口的数据库类的代码

public class CItyDao implements ICityDao {

    private Context context;
    SQLiteDatabase db;

    public CItyDao(Context ctx){
        context = ctx;
    }
    @Override
    public void save(Hashtable<String, String> attributes) {
        DbHelper dbHelper= new DbHelper(context);

        db = dbHelper.getWritableDatabase();

        ContentValues content = new ContentValues();
        Enumeration<String> keys = attributes.keys();
        while (keys.hasMoreElements()){
            String key = keys.nextElement();
            content.put(key,attributes.get(key));
        }
        db.insert("City",null,content);
    }

    @Override
    public void save(ArrayList<Hashtable<String, String>> objects) {

        for(Hashtable<String,String> obj : objects){
            save(obj);
        }

    }

    @Override
    public ArrayList<Hashtable<String, String>> load()
    {
        DbHelper dbHelper= new DbHelper(context);
        db = dbHelper.getReadableDatabase();

        Cursor cursor = db.rawQuery("SELECT * FROM City",null);
        ArrayList<Hashtable<String, String>> objects = new ArrayList<Hashtable<String, String>>();
        while(cursor.moveToNext())
        {
            String [] columns = cursor.getColumnNames();
            Hashtable<String, String> obj = new Hashtable<String,String>();
            for(String col : columns) {
                obj.put(col.toLowerCase(), cursor.getString(cursor.getColumnIndex(col)));
            }
                objects.add(obj);
        }

            return objects;
    }

    @Override
    public Hashtable<String, String> load(String id) {
        return null;
    }
}
这是具有保存功能的City类

public class City implements Serializable {

    private String id;
    private String name;
    private boolean important;
    private TimeZone time;
    String timevalue;

    private transient ICityDao dao = null;

    public City(String name,String time,ICityDao dao){
        init();
        this.name = name;
        this.important = false;
        this.dao = dao;
        //this.time = time

        this.time = TimeZone.getTimeZone(time);
        Date date =  new Date();
        SimpleDateFormat df  = new SimpleDateFormat("hh:mm");
        df.setTimeZone(this.time);
        timevalue = df.format(date);



    }
    private void init() {
        this.id = UUID.randomUUID().toString();
    }
    public String getName() {
        return name;
    }

    public void setImportant(boolean val) {
        this.important = val;
    }
    public boolean isCity(City city) {

        if (this.name.equals(city.name)) // ==?
            return true;
        else
            return false;
    }
    public boolean isImportant() {
        return this.important;
    }
    public String getTime()
    {
        return timevalue;
    }


    //Database

    public void save(ICityDao dao)
    {
        if (this.dao == null)
        {
            this.dao =dao;
        }
        if(dao != null) {
            Hashtable<String, String> row = new Hashtable<String, String>();
            SimpleDateFormat df = new SimpleDateFormat("hh:mm");

            row.put("id", id);
            row.put("name", name);
            row.put("important", important ? "true" : "false"); //Todo Learn this as well
            row.put("time", timevalue);

            dao.save(row);
        }

    }
    
公共类城市实现可序列化{
私有字符串id;
私有字符串名称;
私有布尔重要;
私人时区时间;
字符串时间值;
私有瞬态ICityDao=null;
公共城市(字符串名称、字符串时间、ICityDao){
init();
this.name=名称;
这一点很重要=错误;
this.dao=dao;
//这个时间
this.time=TimeZone.getTimeZone(time);
日期=新日期();
SimpleDataFormat df=新的SimpleDataFormat(“hh:mm”);
df.setTimeZone(这个时间);
时间值=df.格式(日期);
}
私有void init(){
this.id=UUID.randomUUID().toString();
}
公共字符串getName(){
返回名称;
}
公共void setImportant(布尔值){
this.important=val;
}
公共城市(城市){
如果(this.name.equals(city.name))//=?
返回true;
其他的
返回false;
}
公共布尔值是重要的(){
归还这个。重要的;
}
公共字符串getTime()
{
返回时间值;
}
//数据库
公共作废保存(ICityDao)
{
if(this.dao==null)
{
this.dao=dao;
}
if(dao!=null){
Hashtable行=新的Hashtable();
SimpleDataFormat df=新的SimpleDataFormat(“hh:mm”);
行。放置(“id”,id);
行。放置(“名称”,名称);
row.put(“重要的”,重要的?:“真的”:“假的”);//也要学习这个
row.put(“时间”,时间值);
保存(行);
}
}

sqlite>SELECT*FROM City…>
正在等待更多输入,因为您尚未完成该语句。请使用
SELECT*FROM City;
即分号来完成该语句/命令。
public class City implements Serializable {

    private String id;
    private String name;
    private boolean important;
    private TimeZone time;
    String timevalue;

    private transient ICityDao dao = null;

    public City(String name,String time,ICityDao dao){
        init();
        this.name = name;
        this.important = false;
        this.dao = dao;
        //this.time = time

        this.time = TimeZone.getTimeZone(time);
        Date date =  new Date();
        SimpleDateFormat df  = new SimpleDateFormat("hh:mm");
        df.setTimeZone(this.time);
        timevalue = df.format(date);



    }
    private void init() {
        this.id = UUID.randomUUID().toString();
    }
    public String getName() {
        return name;
    }

    public void setImportant(boolean val) {
        this.important = val;
    }
    public boolean isCity(City city) {

        if (this.name.equals(city.name)) // ==?
            return true;
        else
            return false;
    }
    public boolean isImportant() {
        return this.important;
    }
    public String getTime()
    {
        return timevalue;
    }


    //Database

    public void save(ICityDao dao)
    {
        if (this.dao == null)
        {
            this.dao =dao;
        }
        if(dao != null) {
            Hashtable<String, String> row = new Hashtable<String, String>();
            SimpleDateFormat df = new SimpleDateFormat("hh:mm");

            row.put("id", id);
            row.put("name", name);
            row.put("important", important ? "true" : "false"); //Todo Learn this as well
            row.put("time", timevalue);

            dao.save(row);
        }

    }