我在谷歌播放崩溃报告上有这个错误,不知道如何解决它:
java.lang.IllegalStateException: Couldn't init cursor window
at android.database.CursorWindow.native_init(Native Method)
at android.database.CursorWindow.<init>(CursorWindow.java:41)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:276)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:268)
at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:171)
at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:248)
at com.jim2.UpdateService.restaureNotifications(UpdateService.java:274)
at com.jim2.helpers.Globals.updateWidgets(Globals.java:1011)
at com.jim2.helpers.Globals.onReceive(Globals.java:746)
at com.jim2.UpdateService$5.onSignalStrengthsChanged(UpdateService.java:747)
at android.telephony.PhoneStateListener$2.handleMessage(PhoneStateListener.java:387)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3693)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
这是我的代码谁崩溃:
DataBaseHelper d = new DataBaseHelper(context);
Cursor c = d.getNotifications(false);
SharedPreferences preferences;
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager)context.getSystemService(ns);
CharSequence tickerText = "";
if(c!=null && c.moveToFirst()){ // CRASH HERE :(
do{
.... …Run Code Online (Sandbox Code Playgroud) database android cursor illegalstateexception android-sqlite
我在Android中使用sqlite事务:
SQLiteDatabase database = sqlite_helper.getWritableDatabase();
database.beginTransaction();
...
database.setTransactionSuccessful();
database.endTransaction();
Run Code Online (Sandbox Code Playgroud)
我的问题是:
1.我应该endTransaction()像这样放在finally代码块中:
try {
database.beginTransaction();
...
database.setTransactionSuccessful();
}
finally {
database.endTransaction();
}
Run Code Online (Sandbox Code Playgroud)
如果在数据库操作期间出现异常,数据库是否会自动回滚而不使用"finally"?
android.database.sqlite.SQLiteMisuseException: library routine called out of sequence:
,编译时
有没有人帮我回答这些问题?非常感谢!
我对Android很新,我对过滤的listView和从横向模式更改为纵向模式或反之亦然的活动有一些问题.我有一个editText用于过滤"drinkSearch",只要我不改变视角(人像与风景),这个过滤就有效.这是我得到的错误:
java.lang.IllegalStateException:尝试重新打开已经关闭的对象:SQLiteQuery:SELECT _id,name FROM drinks
正如您在下面的代码中看到的,我使用了接口LoaderManager.LoaderCallbacks,这个概念对我来说有点新,我不确定哪里出了问题.我将非常感谢所有的帮助,在此先感谢!
public class Drinks_Fragment extends Fragment实现LoaderManager.LoaderCallbacks {
private static final int DRINKS_LIST_LOADER = 0x01;
private SimpleCursorAdapter adapter;
private ListView drinksList;
private String LOG;
private EditText drinkSearch;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.drinks_list, container, false);
drinkSearch = (EditText)view.findViewById(R.id.drinkInputSearch);
drinksList = (ListView) view.findViewById(R.id.drinksList);
drinksList.setEmptyView(view.findViewById(R.id.empty_list_view));
String[] from = {DrinksTable.COLUMN_NAME};
int[] to = {R.id.drinkName};
getLoaderManager().initLoader(DRINKS_LIST_LOADER, null, this);
adapter = new SimpleCursorAdapter(getActivity().getApplicationContext(), R.layout.drinks_list_item,null, from, to, 0);
drinksList.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
在这部分中,我根据searchDrink editText中输入的字符串向contentProvider询问新的Cursor.(以下代码,直到"返回视图"正好在上面的部分下方,同样的onCreateView方法)
drinkSearch.addTextChangedListener(new TextWatcher() { …Run Code Online (Sandbox Code Playgroud) android android-contentprovider android-listview android-loadermanager android-sqlite
我决定AsyncTask在我的应用程序中添加一个片段,以便更有效地从数据库接收项目.
我将我的泛型设置为Void, Void, List<Object>(Object我创建的对象在哪里),内部方法如下:
private class GetObjectsTask extends AsyncTask<Void, Void, List<Object>> {
@Override
protected List<Object> doInBackground(Void... params) {
SQLiteDatabase db = mDbHelper.getInstance(getActivity().getApplicationContext()).getReadableDatabase();
String[] projection = {
.........
};
String sortOrder = ...;
Cursor c = db.query(TABLE_NAME, projection, null, null, null, null, sortOrder);
while(c.moveToNext()) {
long itemId = ...;
String title = ...;
long startMil = ...;
long endMil = ...;
mList.add(new Object(itemId, title, new Date(startMil), new Date(endMil), null, null));
}
db.close();
return mList;
} …Run Code Online (Sandbox Code Playgroud) 我有以下应用程序架构(为简化而推广):
main Layout由ActionBar自定义View和可滚动Tabs以及ViewPager托管多个组成ListFragments.每个ListFragment都有自己的数据集(1行= ImageView+ TextView),从SQLite数据库加载.在我的ActionBar's自定义中View有一个"搜索" EditText.
当用户开始输入内容时,我想在数据库中执行"移动中"搜索,并以下拉列表的形式显示匹配的名称(这些名称应该是可点击的).我看到了一些如何在a中执行搜索的示例ListView,但与数据库搜索无关.
所以问题是:如何将数据库搜索结果显示为下拉列表,并在用户添加或删除字符时随时刷新它?
我正在尝试打开并写入Android中的Sqlite数据库.根据日志输出,它没有打开.我知道我的语法不是很好,我应该从Party对象而不是直接从片段接口保存,但我的重点是在过程中.任何帮助都会非常有帮助!
package com.android.sqldatabase.sqldatabaseapp;
//imports deleted to save space
public class SqlDatabase {
public static final String KEY_ROWID = "_id";
public static final String KEY_NAME = "name";
public static final String KEY_PARTY = "party_date";
public static final String KEY_STATE = "state";
public static final String KEY_JDATE = "j_date";
public static final String KEY_JTITLE = "j_title";
public static final String KEY_JENTRY = "j_entry";
public static final String KEY_JRATING = "j_rating";
public static final String KEY_JENTRYEDITION = "j_entryEdition";
private static final String DATABASE_NAME …Run Code Online (Sandbox Code Playgroud) 我是新来的sqlite.在我的android项目中,我有一个数据库,我只需要将这些数据一次添加到应用程序.(不要在app运行时每次都插入数据).我怎样才能完成这项任务?
我试着创造
public class DatabaseHandler extends SQLiteOpenHelper {
}
Run Code Online (Sandbox Code Playgroud)
并在onCreate方法中调用此类MainActivity
我想在DBFlow中执行以下语句:
SELECT SECTION_ID, COUNT(SECTION_ID) AS SECTION_COUNT FROM ARTICLES GROUP BY SECTION_ID ORDER BY SECTION_COUNT DESC
Run Code Online (Sandbox Code Playgroud)
我尝试的是:
Select(Article_Table.sectionId).from(Article.java).count(???) ...
Run Code Online (Sandbox Code Playgroud)
该流对象有一个count()方法,但它需要一个DatabaseWrapper作为坦白说,我不明白的说法,我本来期望它采取表列(即房产).
我有什么想法可以做到这一点?
即使在卸载应用程序然后重新安装它之后,也不会调用onCreate方法.
Database.java:
public class Database extends SQLiteOpenHelper {
public static SQLiteDatabase db;
public Database(Context context) {
super(context,"db", null, 1);
Log.i("DB", "dbManager");
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.i("DB", "dbOnCreate");
String s = "CREATE TABLE test(id INTEGER);";
db.execSQL(s);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
Log.i("DB", "dbOnUpgrade");
}
}
Run Code Online (Sandbox Code Playgroud)
我这叫:
Database db = new Database(this);
Run Code Online (Sandbox Code Playgroud)
输出:
07-17 12:42:03.053 16448-16448/com.package.app I/DB:dbManager
这个问题是什么以及如何解决?
我想向SQLite数据库中添加新列,但是我已经在Play商店中发布了我的应用程序,因此,如果我对其进行编辑,则用户需要卸载并重新安装该应用程序,但我不希望这样做。请帮忙,我是Android新手。
android ×10
android-sqlite ×10
sqlite ×5
cursor ×1
database ×1
dbflow ×1
google-play ×1
performance ×1
sql ×1