在sqlite中更新查询 [英] Updating a query in 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屋!