标签: android-sqlite

如何在android中找出Sqlite查询的执行时间

我正在尝试优化我的Sqlite查询的性能.

我想知道是否有任何方法可以找到每个Sqlite语句的执行时间,或者是否有任何工具允许在Android SDK中查看语句执行时间?

虽然我熟悉查询计时器.timer On.timer show命令.

例:

查询超时时间

任何答案都真的很感激!

performance android android-sqlite

2
推荐指数
2
解决办法
2764
查看次数

为什么我会在我的SQLiteOpenHelper构造函数中获得"不兼容的类型:Bla无法转换为Context"?

我正在使用本教程在我的Android项目中实现SQLite功能.

我有这个SQLiteOpenHelper代码:

public class HHSSQLiteHandler extends SQLiteOpenHelper {

    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "HHS.db";
    private static final String TABLE_VENDORS = "vendors";

    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_VENDORID = "vendorId";
    public static final String COLUMN_COMPANYNAME = "companyName";

    public HHSSQLiteHandler(Context context, String vendor,
                       SQLiteDatabase.CursorFactory factory, int company) {
        super(context, DATABASE_NAME, factory, DATABASE_VERSION);
    }
    . . .
Run Code Online (Sandbox Code Playgroud)

...但尝试以这种方式实例化该类:

protected void onPostExecute(String result) {
    try {
        JSONArray jsonArr …
Run Code Online (Sandbox Code Playgroud)

java sqlite android sqliteopenhelper android-sqlite

2
推荐指数
1
解决办法
4035
查看次数

Android - SQLiteDatabase没有这样的表错误(代码1)

ListView在我的应用程序中,用户可以添加/删除项目.我正在使用SQLiteDatabase应用程序未使用时存储项目但是,SQLiteDatabase给我一个奇怪的错误说"No such table found:subjects(code 1).我无法弄清楚为什么会发生这种情况,我以前曾经使用SQLiteDatabase过几次,但这次它只是不起作用.

这是我的代码:

SubjectsDatabase.java -

import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class SubjectsDatabase extends SQLiteOpenHelper {

private static final String SUBJECT_ID = "id";
private static final String SUBJECT_NAME = "name";

private static final String DATABASE_NAME = "subjectsDatabase";
private static final String TABLE_SUBJECTS = "subjects";
private static final int DATABASE_VERSION = 1;

private static final String DATABASE_CREATE …
Run Code Online (Sandbox Code Playgroud)

java sqlite android sqliteopenhelper android-sqlite

2
推荐指数
1
解决办法
4714
查看次数

如何修复索引1处的绑定值在android中为null

我正在创建一个Android应用程序,其中包含使用sqlite数据库的注册表单和忘记密码字段后,单击忘记密码字段安全检查以显示密码与重置按钮.当我单击重置密码字段时,它显示索引1处的绑定值为null请帮我解决这个问题.点击忘记归档后,这是我的活动代码:

 forgot_reset = (ButtonFlat)forgot_dialog.findViewById(R.id.dialog_button_Reset_forgot);
                    forgot_reset.setOnClickListener(new View.OnClickListener() 
                    {

                        @Override
                        public void onClick(View v) 
                        {
                            String stored_sec_hint = loginDataBaseAdapter.getSinlgeEntry(dialog_seq_answer);
                            if(confirm_sec_hint_forgot.equals(""))
                            {
                                Toast.makeText(Login_Page.this, "Please enter your security hint to proceed", Toast.LENGTH_LONG).show();
                            }
                            else
                            {
                                if(stored_sec_hint==null)
                                {
                                    Toast.makeText(Login_Page.this, "Please Enter correct security hint to proceed", Toast.LENGTH_LONG).show();
                                }
                                else
                                {
                                    show_pwd.setText(stored_pass);
                                }
                            }
                        }
                    });

                    forgot_dialog.show();
            }

        });
Run Code Online (Sandbox Code Playgroud)

这是我的数据库适配器类:

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class LoginDataBaseAdapter 
{
        static final String DATABASE_NAME = "login.db";
        static final int DATABASE_VERSION …
Run Code Online (Sandbox Code Playgroud)

android android-sqlite

2
推荐指数
2
解决办法
6514
查看次数

PRIMARY KEY 必须是唯一的(代码 19)错误 SQLite db

这是我第一次尝试实现 SQLite,我遇到了一个我无法解决的常见错误。错误是

03-12 15:37:20.432: E/SQLiteDatabase(1603): Error inserting Test=test string value Entry=entry string value _id=1
03-12 15:37:20.432: E/SQLiteDatabase(1603): android.database.sqlite.SQLiteConstraintException: PRIMARY KEY must be unique (code 19)
Run Code Online (Sandbox Code Playgroud)

我对可能发生的事情有很高的理解。错误是说我的主键——对我来说是 _id——对于每个条目应该是唯一的。但据我所知,我只是想添加一个元素,我相信我已经根据我遵循的教程进行了设置。请看看我有什么,让我知道我做错了什么。提前致谢!

首先,我尝试使用以下行保存条目。我将 id 设置为 1,然后尝试在其他列中保存一些测试值

DatabaseManager.saveEntry(MainActivity.this, "1", "entry string value", "test string value");
Run Code Online (Sandbox Code Playgroud)

数据库管理器

public class DatabaseManager {

    public static void saveEntry(Context context, String id, String entry, String test) {

        try {
            ContentValues values = getContentValuesEntryTable(id, entry, test);
            ContentResolver resolver = context.getContentResolver();
            Cursor cursor = resolver.query(EntryTable.CONTENT_URI, null, null, null, null);
            if (cursor != null …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite

2
推荐指数
1
解决办法
3347
查看次数

如何在SQlite android中获取最后一行

我想获得最后插入的行的主键值(自动增量).我搜索了S/O并找到了最后一行row_id的答案.但我需要最后插入行的值.请帮我.

谢谢

android android-sqlite

2
推荐指数
1
解决办法
7497
查看次数

您是否可以将DBFlow Android ORM与随应用程序打包的existsng数据库一起使用?

您可以将DbFlow ORM与现有SQLite数据库一起使用.这是与应用程序一起打包并在初始安装时复制(从assets文件夹)?

android android-sqlite dbflow

2
推荐指数
1
解决办法
1878
查看次数

将现有的SQLite数据库导入Android应用程序

所以我知道有人问过类似的问题,但我找不到适合我的具体情况的东西。

我有一个创建数据库并填充数据库等的应用程序,但是我在设备上没有超级用户访问权限,所以这是我的问题。我需要使用一些值填充此数据库,然后将其导入到我的应用程序/设备中。

如果我具有root用户访问权限,则可以直接替换/data/data/com.my.application/databases文件夹中的数据库,但是由于我没有root用户访问权限,因此我需要能够导入更改后的数据库此位置并替换标准位置。

谁能帮我一些代码或如何将数据库导入此文件夹的示例?我只需要能够导入和替换现有的。

谢谢,Wihan

sqlite android android-sqlite

2
推荐指数
1
解决办法
5397
查看次数

SQLite Order by WHERE IN 子句

我正在使用 SQLite 并提供id要检索的值列表。但是,这些id值的顺序很重要,我想以相同的顺序检索记录。

例如,

SELECT 
  * 
FROM 
  todos
WHERE 
  todos.id in ( 1, 3, 2, 4 ) 
Run Code Online (Sandbox Code Playgroud)

这将返回:

1
2
3
4
Run Code Online (Sandbox Code Playgroud)

但我希望它以与提供的id值相同的顺序返回,如下所示:

1
3
2
4
Run Code Online (Sandbox Code Playgroud)

我已经看到了 MySQL 和 PostgreSQL 的答案,但没有看到 SQLite 的答案。

sqlite sql-order-by where-in activeandroid android-sqlite

2
推荐指数
1
解决办法
3371
查看次数

插入时数据类型不匹配(代码 20)

在我的项目中,我使用 sqlite 数据库来保存图片及其位置。尝试将数据插入我的数据库时出现此错误:

E/SQLiteLog: (20) statement aborts at 5: [INSERT INTO PHOTO VALUES(NULL,?,?,?,?)] datatype mismatch
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.tomer.finalproject, PID: 18550
                  android.database.sqlite.SQLiteDatatypeMismatchException: datatype mismatch (code 20)
                      at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
                      at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:786)
                      at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:926)
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

名为 SQLiteOpenHelper 的类中的插入方法:

public void insertData(String name, String lat, String lon, byte[] image) {

        SQLiteDatabase database = getWritableDatabase();
        String sql = "INSERT INTO PHOTO VALUES(NULL,?,?,?,?)";
        SQLiteStatement statement = database.compileStatement(sql);
        statement.clearBindings();
        statement.bindString(1, name);
        statement.bindString(2, lat);
        statement.bindString(3, lon);
        statement.bindBlob(4, image);

        statement.executeInsert();

} …
Run Code Online (Sandbox Code Playgroud)

sqlite android insert mismatch android-sqlite

2
推荐指数
1
解决办法
4785
查看次数