Articles of sqlite3

Android Room持久性库@Update无效

我试图通过新的android房间库更新我的数据库,但它无法正常工作。 这是我的方法 @IgnoreExtraProperties @Entity(tableName = CarModel.TABLE_NAME, indices = {@Index(value = “car_name”, unique = true)}) public class CarModel { public static final String TABLE_NAME = “cars”; @PrimaryKey(autoGenerate = true) private int id; @ColumnInfo(name = “car_name”) private String name; @ColumnInfo(name = “car_price”) private String price; private String type; private String position; } MainActivity.java viewModel.isCarsEmpty().observe(MainActivity.this, new Observer() { […]

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

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

无法使用rawQuery正确执行删除查询

我想删除一些表info行比较另一个表type ,我的代码如下所示。 我没有收到任何错误或exception仍然无法删除数据。 请建议我 String query = “delete from info where _id in ” + “( select a._id ” + ” from info a, type b,” + ” where a.t_id = b._id and b.type_name = ‘Petrol’ )”; try{ database.rawQuery(query,null); }catch (Exception e){ e.printStackTrace(); }

检索数据库中所有表的列表

我在通常的数据库文件夹下有这个数据库文件,里面有一堆表。 请注意,我不想在命令行下检索。 我知道我可以使用“.tables”命令。 我想使用代码检索其中所有表的列表,以便我可以在每个表上执行一些特定的算法。 另外,我在Android上没有发现任何关于此问题的问题,所以请原谅我,如果有的话。 我想知道我是否可以在DatabaseUtils下使用任何function,但我也没有find任何function。

如何在房间持久性库中插入图像?

我正在为我的Android应用程序使用房间持久性库,现在我必须在我的数据库中插入图像。 我成功地为原始数据types定义了@Entity。 并且还通过转换器类,我存储了所有对象,日期,时间。 现在我必须存储图像。 我无法理解我们如何定义列信息和实体以及我们如何插入数据以及从表中读取数据。 插入单行的数据的最大大小是多少? Android SQLite中一个字段中数据的最大和最小大小是多少?

查询批量数据时,第一次光标操作太慢。 怎么解决?

我必须查询三个表,并将数据显示给我的customerView。 我的代码是这样的: Log.v(TAG, System.CurrentTimeMillis()) int len = cursor.getCount(); Log.v(TAG, System.CurrentTimeMillis()) Product[] products = new Product[len]; int i = 0; while(cursor.moveToNext()){ products[i] = new Product(cursor.getstring(0),…..); } Log.v(TAG, System.CurrentTimeMillis()) Sqlite查询: String sql = “SELECT T1.PRODUCT_ID, CODE, SHORT_DESCRIPTION, CATEGORY_CODE, BRAND_CODE, FORM_CODE, DENOMINATOR, T1.PIECE_PRICE, T1.lowest_piece_price, T2.sku_type, T1.master_sku ” + “FROM CUSTOMER_PROD_LIST_ITEMS T1 INNER JOIN PRODUCT T2 ON T1.PRODUCT_ID = […]

从资产复制sqlite数据库时出现“无法打开数据库”错误在Android 4.2中

我的代码工作正常对于Android 2.3但我不知道为什么它不适用于Android 4.2 我的exception日志就在这里 01-17 09:54:04.411: E/SQLiteLog(24202): (14) cannot open file at line 30176 of [00bb9c9ce4] 01-17 09:54:04.411: E/SQLiteLog(24202): (14) os_unix.c:30176: (2) open(/data/data/com.example.myapp/databases/myapp.db) – Failed to open database ‘/data/data/com.example.mypapp/databases/myapp.db’. android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209) at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193) at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804) at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789) […]

在android中的sqlite3中创建自定义函数

我需要在android app中的sqlite3中添加一个自定义函数来计算两个地理坐标之间的距离。 我find了一个c函数 ,可以在sqlite3中添加为自定义函数。 我正在使用NDK编译sqlite3文件来创建.so文件。 但我不知道在哪里为我的自定义函数添加代码也是用C编写的,在哪里调用sqlite3_create_function(…) ,它将自定义函数与sqlite相连,所以我可以在sqlite查询中使用我的自定义函数。

Android SQLiteConstraintException:错误代码19:约束失败

我已经看到了有关此exception的其他问题,但所有这些问题似乎都得到了解决方案的解决,即已经存在指定主键的行。 对我来说,情况似乎并非如此。 我试过用双引号替换我的字符串中的所有单引号,但同样的问题出现了。 我正在尝试通过执行以下操作在我创建的SQLite数据库的Settings表中插入一行: db.execSQL(“DROP TABLE IF EXISTS “+Settings.SETTINGS_TABLE_NAME + “;”); db.execSQL(CREATE_MEDIA_TABLE); db.execSQL(CREATE_SETTINGS_TABLE); Cursor c = getAllSettings(); //If there isn’t already a settings row, create a row full of defaults if(c.getCount()==0){ ContentValues cv = new ContentValues(); cv.put(Settings.SETTING_UNIQUE_ID, “‘”+Settings.uniqueID+”‘”); cv.put(Settings.SETTING_DEVICE_ID, Settings.SETTING_DEVICE_ID_DEFAULT); cv.put(Settings.SETTING_CONNECTION_PREFERENCE, Settings.SETTING_CONNECTION_PREFERENCE_DEFAULT); cv.put(Settings.SETTING_AD_HOC_ENABLED, Settings.SETTING_AD_HOC_ENABLED_DEFAULT); cv.put(Settings.SETTING_SERVER_ADDRESS, Settings.SETTING_SERVER_ADDRESS_DEFAULT); cv.put(Settings.SETTING_RECORDING_MODE, Settings.SETTING_RECORDING_MODE_DEFAULT); cv.put(Settings.SETTING_PREVIEW_ENABLED, Settings.SETTING_PREVIEW_ENABLED_DEFAULT); cv.put(Settings.SETTING_PICTURE_RESOLUTION_X, Settings.SETTING_PICTURE_RESOLUTION_X_DEFAULT); cv.put(Settings.SETTING_PICTURE_RESOLUTION_Y, Settings.SETTING_PICTURE_RESOLUTION_Y_DEFAULT); cv.put(Settings.SETTING_VIDEO_RESOLUTION_X, […]

Android SQlite OnUpgrade问题

我在Android Market中有一个名为SieveSMS的应用程序。它基本上可以让人们根据规则阻止传入的短信,就像outlook对电子邮件一样。 我更改了DB结构如下(在同一个表中) 1)数据库版本2 添加新列“未读” 2)DB版本3 添加新列“例外” 如果已经拥有应用程序但尚未升级到版本2的用户现在看到该应用程序的第3版会发生什么? 如何确保版本2中的更改也可供人们使用? 除此之外,如果安装了版本2并且他们尝试升级到版本3的人会发生什么情况。onUpgrade会给我一个“未读”列已经存在的错误吗? 您是否认为根据当前版本的DB在onUpgrade方法中使用条件条件是明智的?