在sqlite中更新查询 [英] Updating a query in sqlite

查看:118
本文介绍了在sqlite中更新查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

活动代码

String MMS = "(SELECT Name FROM UserData WHERE MessagesSent=(SELECT max(MessagesSent) FROM UserData))";
db.execSQL("UPDATE MainData SET MostMessagesSent = "+ MMS + "+ WHERE Data = MyData");

我不确定代码但是这是一个活动的onCreate ...所有变化使用此代码进行?

Im not sure about the code but this is is the onCreate of an activity... WIll the changes take place using this code?

这是正确的方法吗?

我希望查询是可以理解的.. 。

I hope the query is understandable...

错误

 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.database.sqlite.SQLiteDatabase.execSQL(java.lang.String)' on a null object reference
                                                   at com.appmaster.akash.messageplus.Settings.UsageSettings.onCreateView(UsageSettings.java:43)
                                                   at android.support.v4.app.Fragment.performCreateView(Fragment.java:2354)
                                                   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419)
                                                   at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
                                                   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
                                                   at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799)
                                                   at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)
                                                   at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367)
                                                   at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
                                                   at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229)
                                                   at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:700)
                                                   at android.os.Handler.handleCallback(Handler.java:742)
                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                   at android.os.Looper.loop(Looper.java:157)
                                                   at android.app.ActivityThread.main(ActivityThread.java:5571)
                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745)
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)


推荐答案

如果 db 已正确初始化,使用以下行:

If db is properly initialized, with this line:

db.execSQL("UPDATE MainData SET MostMessagesSent = "+ MMS + "+ WHERE Data = MyData");

您要执行 UPDATE 声明将更新表 MainData MostMessagesSent 列,其中包含从变量彩信:

you want to execute an UPDATE statement that will update the column MostMessagesSent of table MainData with a value fetched from the query strored in the variable MMS:

String MMS = "(SELECT Name FROM UserData WHERE MessagesSent=(SELECT max(MessagesSent) FROM UserData))";

为了使其正常工作,您必须正确初始化 db 对象。

我想你有一个扩展 SQLiteOpenHelper 的类,它提供 db 的初始化。

此外,表和列的名称必须与预期的行为相匹配。

问题是 execSQL()没有返回一个值,表明更新是否成功。你必须自己检查一下。

In order for this to work you must have initialized properly the db object.
I suppose you have a class extending SQLiteOpenHelper which provides the initialization of db.
Also the names of the tables and columns must match the intended behavior.
The problem is that execSQL() does not return a value indicating that the update was successful or not.
You have to check it yourself.

这篇关于在sqlite中更新查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆