Articles of SQLite

是否可以使用静态“数据库助手”类?

我有一些Android项目,其中大部分都与SQLite数据库连接。 我感兴趣的是使用一些像“ DatabaseHelper.class ”这样的静态类是一个很好的编程习惯(或者是一个糟糕的习惯),其中我将使用与数据库操作相关的所有静态方法。 例如 public static int getId(Context context, String name) { dbInit(context); Cursor result = db.rawQuery(“SELECT some_id FROM table WHERE some_name = ‘” + name + “‘”, null); result.moveToFirst(); int id = result.getInt(result.getColumnIndex(“some_id”)); result.close(); return id; } 其中dbInit(context) (在我的所有静态方法中用于数据库操作)是 private static void dbInit(Context context) { if (db == null) { db = context.openOrCreateDatabase(DATABASE_NAME, […]

Android – SQLiteStatement(多次插入)执行失败,API级别为14

我使用以下代码在DB中有效地插入新行: @Override public void insertImpacts(HolderExpense expense, int[] shares, int[] amounts, HolderUser[] users) { try { mDb.beginTransaction(); // the insertion of the impacts of one expense are considered to be ONE block String sql = “INSERT INTO “+DATABASE_TABLE_IMPACTS+” “+ “(“+IMPACT_USERROWID+”, “+IMPACT_EXPENSEROWID+”, “+IMPACT_TTROWID+”, “+IMPACT_NUMBEROFPARTS+”, “+IMPACT_FIXEDAMOUNT+”) VALUES (?, ?, ?, ?, ?)”; SQLiteStatement stmt = mDb.compileStatement(sql); stmt.bindLong(2, expense.rowId); […]

在Android SQLite中选择NULL值

由于selectArgs不正确,我正在执行以下方法但没有成功(至少这是我所相信的。 find所有: public Collection findAllByCodigoSetorOrderByStatusWhereDataAgendamentoIsNull(Integer vendedor) { Collection objects = null; String selection = Object.FIELDS[20] + “=?” + ” OR ” + Object.FIELDS[20] + “=?” + ” OR ” + Object.FIELDS[20] + “=?” + ” AND ” + Object.FIELDS[6] + “=?”; String[] selectionArgs = new String[] { “””, “‘null'”, “NULL”, String.valueOf(vendedor) }; Collection results = […]

如何防止在sqlite数据库中插入重复值(如果重复则覆盖)

我在我的数据库中创建了两个表,在两个表中我同时插入值,现在我要做的是,我想在第二个表中插入记录,但条件是,如果有两个相同记录然后我想只插入一个记录不重复值,在第二个表中有两个字段一个是id ,第二个是类别 ,当用户插入两个相同的类别时,我想只插入一个条目,下面是我的代码不是工作正常,它插入所有记录接受重复值.. public long InsertCat(String idd, String cat) { try { SQLiteDatabase db; long rows = 0; db = this.getWritableDatabase(); ContentValues Val = new ContentValues(); Val.put(“IDD”, idd); Val.put(“Category”, cat); Cursor c = db.rawQuery(“SELECT * FROM ” + TABLE_CATEGER + ” WHERE Category='”+cat+”‘”,null); while(c.moveToNext()) { if(c.getString(0).equals(cat)) { flag=true; } } if(flag==true) { rows=db.update(TABLE_CATEGER, Val, “Category='”+cat+”‘” […]

Android重命名SQLite数据库

是否可以重命名已在android中创建的数据库? 在我的应用程序更新中,我想重命名旧数据库并安装新的然后比较一些值,最后删除旧的。 我正在从assets文件夹中的sqlite文件进行创建。 这就是为什么我不能重命名所有表并插入新表。 澄清: 旧数据库将只包含一个表,我需要比较来自新(来自更新)数据库的值。 两个数据库都已从assets文件夹中的sqlite文件复制过来。 一旦我将旧数据库中的值与新数据库进行比较,我将删除旧数据库,并使用我比较的值来使用新数据库。 我正在考虑做的是重命名旧的创建新的取而代之的所有事情。

Android MediaStore获取音乐文件的不同文件夹

寻找从Android MediaStore获取音乐文件的文件夹路径以获取输入目录路径的方法。 所以实际上问题是关于如何对MediaStore进行正确的查询。 这是一个例子。 我目前的代码: String dirPath=”/mnt/sdcard/Music/”; String selection =MediaStore.Audio.Media.DATA +” like ?”; String[] projection = {MediaStore.Audio.Media.DATA}; String[] selectionArgs={dirPath+”%”}; Cursor cursor = this.managedQuery( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, null); List songs = new ArrayList(); while(cursor.moveToNext()) songs.add(cursor.getString(0)); 因此,我们将在songs List smth中有: /mnt/sdcard/Music/song1.mp3 /mnt/sdcard/Music/song2.mp3 /mnt/sdcard/Music/FolderWithSongs/song3.mp3 /mnt/sdcard/Music/AnotherFolderWithSongs/song4.mp3 /mnt/sdcard/Music/AndOneMoreFolder/song5.mp3 /mnt/sdcard/Music/AndOneMoreFolder/song6.mp3 /mnt/sdcard/Music/AndOneMoreFolder/song7.mp3 /mnt/sdcard/Music/AndOneMoreFolder/SomeFolder/song8.mp3 /mnt/sdcard/Music/AndOneMoreFolder/SomeFolder/song9.mp3 我真正想要的是 – 从dirPath获取这样的DISTINCT一级嵌套路径列表,如下所示: /mnt/sdcard/Music/FolderWithSongs/ /mnt/sdcard/Music/AnotherFolderWithSongs/ /mnt/sdcard/Music/AndOneMoreFolder/ 如果这里将是当前文件夹文件 – […]

错误日志sqlite无法从/cachedGeoposition.db加载

我正在使用phonegap和JQM开发应用程序。 我有个问题。 任何人都可以告诉我为什么我在启动应用程序时在日志中出现此错误。 10-09 13:47:33.316: D/CordovaWebView(26882): >>> loadUrlNow() 10-09 13:47:33.320: D/DroidGap(26882): onMessage(onNativeReady,null) 10-09 13:47:33.320: D/DroidGap(26882): onMessage(onPageFinished,file:///android_asset/www/index.html) 10-09 13:47:33.363: E/SQLiteLog(26882): (14) cannot open file at line 30174 of [00bb9c9ce4] 10-09 13:47:33.363: E/SQLiteLog(26882): (14) os_unix.c:30174: (2) open(/CachedGeoposition.db) – 10-09 13:47:33.371: D/WebKit(26882): ERROR: 10-09 13:47:33.371: D/WebKit(26882): SQLite database failed to load from /CachedGeoposition.db 10-09 13:47:33.371: D/WebKit(26882): Cause – […]

如何在Android SQLite数据库中从1重新启动自动增量ID

我有一个Android SQLite数据库,我插入了一些行。 删除这些行后,ID列从最后一个ID继续,我想从1重新开始计数。

检查sqlite for Android中的查询是否成功

为了将数据插入到android中名为mytable的sqlite表中,我使用查询: db.execSQL(“INSERT INTO MYTABLE VALUES(”,'”+name+”‘,NOW());”); 我想检查此查询是否已成功插入表中。 在php(使用mysql)中你可以很容易地做到 if($result) echo ‘success’; else echo ‘not inserted’; 但是android(用sqlite)中的等效代码检查查询是否成功执行没有任何错误是什么?

有没有有效的方法使Android数据库查询更快?

在我的Android应用程序中,我需要获取50,000个数据库条目(文本),并在活动开始时将其与值进行比较(在onCreate() )。 我用最简单的方式做到这一点:我将整个表从db传递到游标。 然而,这种方式太迟钝了。 有没有其他方法可以更有效地做到这一点? 编辑:该应用程序是“拼字游戏解算器”,这就是我在查询中不使用WHERE子句的原因(获取整个数据并将其与输入字母的组合进行比较)。 起初我正在使用一个包含完整可能单词的大表。 现在我使用26张桌子。 这减少了滞后,我在一个线程上进行数据库调用 – 这也解决了很多问题。 它仍然有点滞后但更好。