Articles of SQLite

在java中解密错误

我试图encryption/解密Java中的string。 没有关于encryption的问题,然后存储在sqlite表中。 但是我总是得到同样的错误试图解密它: “java.security.InvalidKeyException:当一个预期的没有IV设置” 这是我的代码片段: public String encrypt(String password){ try { String key = "mysecretpassword"; SecretKeySpec keySpec = null; keySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); cipher.init(Cipher.ENCRYPT_MODE, keySpec); return new String(cipher.doFinal(password.getBytes())); } catch (Exception e) { return null; } } public String decrypt(String password){ try { String key = "mysecretpassword"; SecretKeySpec keySpec = […]

Android SQLite数据库被损坏

这个链接完全描述我的问题: http : //old.nabble.com/Android-database-corruption-td28044218.html#a28044218 现在大约有300人在使用我的Android应用程序,每隔一段时间我都会收到一个崩溃报告给服务器: android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621) at android.app.ActivityThread.access$2200(ActivityThread.java:126) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:4595) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:521) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) at dalvik.system.NativeStart.main(Native Method) Caused by: android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed at android.database.sqlite.SQLiteQuery.native_fill_window(Native Method) at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:75) at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:295) at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:276) at […]

Android – 查看设备上的SQLite数据库?

有什么工具可以让我浏览Android设备上的数据库吗? 像Sqlpipe理工作室 – 你知道GUI工具,显示数据库,表格,表格中的行等 我正在使用Eclipse进行开发(如果它对于插件build议很重要)。 谢谢!

如何在SQLite数据库中存储和检索字节数组(图像数据)?

在Android中,如何在SQLite数据库中存储和检索字节数组(图像数据)?

避免在Android设备上的应用设置中点击“清除数据”button,从数据库中删除数据

我正在使用database来存储一些data 。 但是当用户进入Apps Setting并按下Apps Setting的'clear data'button时,数据库中的数据被删除,如何避免这种情况。 我可以使'clear data'button在我的应用程序在应用程序设置为未启用或任何其他build议….

从另一个活动刷新Recyclerview

我有我的主要活动与片段,其中有一个Recyclerview从数据库中填充所有数据。 在这个片段中,我得到一个button,调用另一个活动来将对象插入到数据库中。 问题是当活动结束并返回到主活动Recyclerview不显示我刚刚创build的新项目。 我试着用这段代码: @Override public void onResume() { super.onResume(); adapterItem.addItem(MyApplication.getWritableDatabase().getAllItems()); listProjectsView.scrollToPosition(0); } 函数getAllItems从sqlite中检索所有的数据。 在我的RecyclerView我的adapterItem我得到这个: public void addItem(ArrayList<Item> listItems) { this.listItems = listItems; notifyItemInserted(0); } 它工作“好”。 主要问题是当我切换到另一个应用程序在我的手机进行中,我回到我的开发应用程序的onResume方法打开,并再次显示我的最后一个插入,两次填充这个项目(等等,如果我再做一次)。 谢谢

从AsyncTask Android返回数据

我试图提到类似的问题,但没有得到任何帮助。 在我的Android应用程序中,我计划实现用户访问过的最近引用,即类似于最近访问过的网页。 以下是我所遵循的步骤: 1.)每当用户打开任何公司视图时, 从数据库中提取公司符号 2.)然后将当前符号与dateTime一起存储在数据库中。 3.)对于从数据库获取的所有符号, 获取其current value和%Change并显示公司名称,当前值和%更改列表中。 问题出现在ASyncTask类中,因为postExecute方法不允许它的返回types是void以外的任何其他types。 我做错了什么? 任何帮助将是救命! String[] rsym,rcmp,rchg; rdbM = new RecentDBManager(CompanyView.this); try { Calendar date1 = Calendar.getInstance(); SimpleDateFormat dateformatter = new SimpleDateFormat( "dd/MM/yyyy HH:mm:ss"); String currentdate = dateformatter.format(date1.getTime()); rdbM.openDB(); //STEP 1 rsym = rdbM.getRecent_sym(); //STEP 2 rdbM.setData(currentsymbol, currentdate); rdbM.closeDB(); } catch (Exception e) { throw new Error(" *** […]

Android:SQLite – insertWithOnConflict

我正在调用insertWithOnConflict,使用SQLiteDatabase.CONFLICT_IGNORE。 但是,如果发生冲突,则返回“-1”而不是现有行的ID。 我该如何纠正? 表格创build: 编辑: String CREATE_CATEGORY_TABLE = "CREATE TABLE "+TABLE_CATEGORY+"(" + BaseColumns._ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+ KEY_CATEGORY_NAME+" TEXT UNIQUE" + ")"; db.execSQL(CREATE_CATEGORY_TABLE); 插入语句: ContentValues values = new ContentValues(); values.put(KEY_CATEGORY_NAME, name); int catID = (int) db.insertWithOnConflict(TABLE_CATEGORY, null, values, SQLiteDatabase.CONFLICT_IGNORE);

ArrayAdapter:你必须提供一个textview的资源ID

我有一个应用程序,我想要从SQLite数据库填充ListView的数据…在这部分我有一个问题,与arrayAdapter … 这里是我填写listView的方法的代码: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); PetListView = (ListView)findViewById(R.id.list); MyDatabaseHelper db = new MyDatabaseHelper(this); String [] items = new String[100]; List<Pet> pets = db.getAllPets(); for (int i = 0; i < 10; i++) { items[i] = pets.get(i).getName(); } ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.activity_list_item, R.id.textView1list, items); PetListView.setAdapter(adapter); } 这是我的数据库帮手中实现的方法: public […]

IllegalStateException:从行0获取字段插槽col -1失败

这是我的LogCat: 01-15 22:13:08.277: ERROR/AndroidRuntime(28747): java.lang.IllegalStateException: get field slot from row 0 col -1 failed 01-15 22:13:08.277: ERROR/AndroidRuntime(28747): at android.database.CursorWindow.getLong_native(Native Method) 01-15 22:13:08.277: ERROR/AndroidRuntime(28747): at android.database.CursorWindow.getLong(CursorWindow.java:414) 01-15 22:13:08.277: ERROR/AndroidRuntime(28747): at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:108) 01-15 22:13:08.277: ERROR/AndroidRuntime(28747): at android.database.CursorWrapper.getLong(CursorWrapper.java:127) 01-15 22:13:08.277: ERROR/AndroidRuntime(28747): at com.mohit.geo2do.adapters.TasksAdapter.bindView(TasksAdapter.java:60) 01-15 22:13:08.277: ERROR/AndroidRuntime(28747): at android.widget.CursorAdapter.getView(CursorAdapter.java:186) 01-15 22:13:08.277: ERROR/AndroidRuntime(28747): at android.widget.AbsListView.obtainView(AbsListView.java:2818) 01-15 22:13:08.277: ERROR/AndroidRuntime(28747): at android.widget.ListView.measureHeightOfChildren(ListView.java:1218) […]