Android 数据库如何更新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 数据库如何更新相关的知识,希望对你有一定的参考价值。

在数据库升级时,不同版本的数据库,他们定义的表结构完全可能是不一样的,比如版本1的表A有10个列里面有十个数据,而下一个版本2的10个列里面有20条数据。此时我应该怎么做呢?

1、设置一个DB_VERSION

public static final int DB_VERSION = 1;

2、当你要更新表的时候就把DB_VERSION+1,就会触发onUpgrade,数据库就更新了,记得采纳

public DBHelper() 
    // for test
    daoConfig = new DbManager.DaoConfig()
            .setDbName(DB_NAME)
            .setDbVersion(DB_VERSION)
            .setDbDir(Environment.getExternalStorageDirectory())
            .setDbOpenListener(new DbManager.DbOpenListener() 
                @Override
                public void onDbOpened(DbManager db) 
                    db.getDatabase().enableWriteAheadLogging();
                
            )
            .setDbUpgradeListener(new DbManager.DbUpgradeListener() 
                @Override
                public void onUpgrade(DbManager db, int oldVersion, int newVersion) 
                    updateTable(db, xx.class);
                    
                
            );

参考技术A 0、本质上是listview绑定Adapter,Adapter关联List,因此List变化后导致Adapter同步变化;再通过调用adapter.notifyDataSetChanged();方法使得listview界面自动更新。操作:1、ListstrName=newArrayList();//实际的数据源2、Adapteradapter=newArrayAdapter(context,R.layout.xmlforitem,strName);//适配器,其中R.layout.xmlforitem是列表中每一项的布局,可以用默认的也可自建,strName则是将数据源绑定到适配器3、listView.setAdapter(adapter);//将适配器绑定到列表显示控件ListView;4、strName.add("TESTONE");//增加一项,引起list变化,Adapter也随之变化;5、adapter.notifyDataSetChanged();//调用notifyDataSetChanged();更新适配器,ListView会自动刷新,notifyDataSetChanged()方法可能需要在UI线程中调用,建议自行测试;6、数据增加可能引起内存变化,需防内存溢出;7、其他。以上仅供参考,建议多搜索相关文档。 参考技术B SQLiteOpenHelper的onUpgrade方法里面更新数据库。 参考技术C 重写onStart(),在里面加上getData()即可,也就是每次进入这个页面就刷新数据 参考技术D 我不是你想象中的那样完美那样坚强,金钱和美女就足以把我征服!

Android - 如何通知用户在数据库中更新了一行

【中文标题】Android - 如何通知用户在数据库中更新了一行【英文标题】:Android - How to notify the user one row is updated in data base 【发布时间】:2015-05-11 04:50:23 【问题描述】:

我们在 android 中开发了一个 Hotel Menu Order 项目。现在我们已经成功创建了项目。我们使用javaJax-rs 用于网络服务,Mysql 用于数据库,Rest 用于通信。

现在我们想在我们的应用中添加更多功能。当客户符合他们的订单时,该订单应显示给厨房和管理员。当我们用谷歌搜索一些例子时,我们找到了一种方法。那是Google Cloud Messaging。但这是在线服务。我们不能使用这项服务。

因为我们在离线服务中使用。我们在酒店使用一台集中式服务器,所有设备都将连接到 WiFi。没有互联网连接。

在这种情况下,如何通知用户在数据库中更新了一行。请让我们知道如何实现这一目标。

【问题讨论】:

通过短信,您可以向设备发送短信并发送其中的内容。在设备端,您可以检查号码和短信文本并在客户端执行操作。 我想你可以在android中搜索推送通知。 @RoshanBharti.. GCM 是在线服务。但是我们需要离线服务.. @NamanGala.. 是否可以在没有互联网连接的情况下从本地服务器发送推送通知?? @NewDeveloper,我不知道如何在没有互联网连接的情况下使用它。 【参考方案1】:

通过短信,您可以做的是,您可以使用twilio 等第三方服务将短信发送到设备,在客户端,即设备端,您可以获得短信广播验证号码和短信内容,阅读内容并相应地更新应用程序数据库和 UI。

或者,如果一台设备有互联网,那么您可以向该设备发送 GCM 通知,然后您可以从该设备通过 wifi 直接更新其他设备。但是wifi直连有一些限制,我认为使用短信是一个更好的选择。

【讨论】:

Raza.. 感谢您的快速回复。但我们需要任何开源解决方案。 网上可以找到很多样例,请自行搜索。我给了你一个想法,努力寻找如何实现它。那里有很多示例解决方案,谷歌它。 Google 是你最好的朋友,我的朋友记得。 看到这里,twilio.com/docs/quickstart/php/android-client和androidexample.com/…你会有一些想法,有不清楚的可以多搜索 :-) .. 谢谢朋友.. 我会用谷歌搜索,如果我找到解决方案会告诉你.. 对不起.. 我们无法发送短信。因为我们使用的是平板电脑。在某些平板电脑中没有 SIM 卡选项 :-( ...【参考方案2】:

你可以使用谷歌云信使服务,谷歌通过它为你的客户提供免费的消息服务。 http://hmkcode.com/android-google-cloud-messaging-tutorial/这个例子会帮助你更好地理解。

【讨论】:

是否可以离线发送和接收通知??因为我在我的问题中提到我们需要离线通知.. 这里您使用的是谷歌云服务,这些服务需要客户端连接互联网。

以上是关于Android 数据库如何更新的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 上接收实时 API 数据更新?

Android,如何从我的数据库更新列表视图中的选定项目?

Android - 如何通知用户在数据库中更新了一行

如何在 android 的 Shinobi 折线图中更新/删除/插入新的系列/数据?

如何使用目标实体更新 Android 上的 Rooms 数据库表中的特定列?

Android:在 RecyclerView 中拖放项目时如何有效更新 SQLite 数据库?