标签: android-sqlite

如何使用id sqlite获取行?

这是一个简单的!然而,我错过了一些东西.请帮帮我.在这里,我试图通过id获取值,但不能这样做.即使在更改id的值后,它也会返回相同的值.

    db = openOrCreateDatabase("DBSOURCE", 0, null);
    Cursor cursorc = db.rawQuery("SELECT * FROM LIST WHERE ID="+id+"", null);
    cursorc.moveToFirst();

    int NameID = cursorc.getColumnIndex("Name");
    int mobilenumberID = cursorc.getColumnIndex("MoblieNumber");

    edName.setText(cursorc.getString(NameID));
    edMobNum.setText(cursorc.getString(mobilenumberID));

    cursorc.close();

    db.close();
Run Code Online (Sandbox Code Playgroud)

java sqlite android android-sqlite

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

如何在android中单击listview项目从数据库获取id

我在本网站上搜索了与此相关的各种问题,但我无法解决我得到的问题.

我想点击listview项目从数据库中获取id

这是我的类别类:

package com.example.reminders;

import java.util.List;

import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class Categories extends ListActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        DBAdapter db = new DBAdapter(Categories.this);
        db.open();
        List<String> cs = db.getAllCategoriesList();
        setListAdapter(new ArrayAdapter<String>(this, R.layout.activity_categories,cs));
        ListView listView = getListView();
        listView.setTextFilterEnabled(true);
        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // When clicked, show a toast with the …
Run Code Online (Sandbox Code Playgroud)

android android-listview android-sqlite

5
推荐指数
1
解决办法
8230
查看次数

从SQLite数据库加载10000行的最快方法是什么?

从SQLite数据库加载10,000行到内存的最快方法是什么?每行有1个文本和4个整数.目前,我这样做:

while(!cursor.isAfterLast()) {
    cursor.copyStringToBuffer(column_index_1, buffer);
    cursor.copyStringToBuffer(column_index_2, buffer);
    cursor.copyStringToBuffer(column_index_3, buffer);
    cursor.copyStringToBuffer(column_index_4, buffer);
    cursor.copyStringToBuffer(column_index_5, buffer);
    cursor.moveToNext();
}
Run Code Online (Sandbox Code Playgroud)

Galaxy Nexus上面的代码大约需要750毫秒.在较旧的设备上,它可能会慢几倍.我可以加快速度吗?

(此时,你可能会输入类似"为什么需要将行加载到内存中?"这有点复杂但我可以尝试解释一下是否有人感兴趣.编辑:这是解释:https:// gist .github.com/fhucho/af355d56ae3145e3e30f)

sqlite android database-performance android-sqlite

5
推荐指数
1
解决办法
1246
查看次数

如何有效地使用ormlite在android sqlite数据库中插入批量数据

我试图一次在android sqlite数据库中插入100000条记录.我正在使用以下两种不同的方法.

 private void bulkInsertDataBySavePoint(final List<User> users) {
    log.debug("bulkInsertDataBySavePoint()");
    DatabaseConnection conn = null;
    Savepoint savepoint = null;
    try {
        conn = userDao.startThreadConnection();
        savepoint = conn.setSavePoint("bulk_insert");
        for (User user : users) {
            userDao.create(user);
        }
    } catch (SQLException e) {
        log.error("Something went wrong in bulk Insert", e);
    } finally {
        if (conn != null) {
            try {
                conn.commit(savepoint);
                userDao.endThreadConnection(conn);
            } catch (SQLException e) {
                log.error("Something went wrong in bulk Insert", e);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和

   private void bulkInsertDataByCallBatchTasks(final List<User> users) { …
Run Code Online (Sandbox Code Playgroud)

sqlite android ormlite android-sqlite

5
推荐指数
1
解决办法
5239
查看次数

表没有创建sqlite android

我正在制作一个应用程序,我想保存用户的联系人详细信息.但每当我尝试插入或选择一些值我得到一个错误.

DataBasae代码

public class ContactsDatabase extends SQLiteOpenHelper {

    private static final int dbVersion = 1;
    private static final String dbName = "HSsuraksha";
    private static final String tableName = "contactsDetails";
    private static final String contactId = "contactId";
    private static final String groupId = "groupId";
    private static final String groupGroupId = "groupId";
    private static final String groupTable = "groupDetails";
    private static final String contactName = "contactName";
    private static final String contactNumber = "contactNumber";
    private static final String createTable = "Create Table " …
Run Code Online (Sandbox Code Playgroud)

android android-sqlite

5
推荐指数
1
解决办法
8912
查看次数

引起:android.database.sqlite.SQLiteException:near"":语法错误(代码1):,同时编译:

    11-27 03:32:04.471: E/AndroidRuntime(23137): Caused by: android.database.sqlite.SQLiteException: near "order": syntax error (code 1): , while compiling: create table order (_id integer primary key autoincrement, origin text not null, quantity integer not null); 

MyDatabase类:

public class MyDatabase extends SQLiteOpenHelper {

    public static final String TABLE_NAME = "order";
    public static final String TABLE_ID = "_id";
    public static final String TABLE_ORIGIN = "origin";
    public static final String TABLE_QUANTITY = "quantity";
    private static final String DATABASE_NAME = "Appple.db";
    private static final int DATABASE_VERSION = 1; …
Run Code Online (Sandbox Code Playgroud)

java android android-sqlite

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

Android SQLite事务和多线程

在我的应用程序中,我调用了一些Web服务来更新数据库。每个Web服务调用都是在特定线程中进行的,从而导致多个线程“一次”更新数据库对象。

在每个线程中,我都使用类似的事务:

Thread 1 (webservice 1)
beginTransaction()
insert a row in the table 1
update a row in the table 1
endTransaction()

Thread 2 (webservice 2)
beginTransaction()
update a row in the table 2
update a row in the table 2
endTransaction()
Run Code Online (Sandbox Code Playgroud)

但是我遇到一个问题,在谷歌搜索后我无法回答自己。由于事务是在不同的线程中处理的,它们是否彼此不同?换句话说,数据库使用的是单独的“声明堆栈”还是公共的?

从我的阅读中,我了解到事务在同一堆栈中,即在线程1中提交事务可能会提交表2上的更新。例如,我认为可能发生的DB语句堆栈:

beginTransaction() //Thread 1 begins a transaction
insert a row in the table 1
update a row in the table 1
beginTransaction() //Thread 2 begins a transaction
update a row in the table 2
update a row …
Run Code Online (Sandbox Code Playgroud)

sqlite multithreading android transactions android-sqlite

5
推荐指数
1
解决办法
1678
查看次数

sqlite android提取联系人与电话号码

我正面临这个sqlite问题,我试图通过以下查询提取具有电话号码的联系人:

Cursor cursor = context.getContentResolver().
    query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
            new String[]{
                ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
                ContactsContract.CommonDataKinds.Phone.NUMBER,
                ContactsContract.Contacts.DISPLAY_NAME,
                ContactsContract.Contacts.PHOTO_URI
            },
            ContactsContract.Contacts.HAS_PHONE_NUMBER + ">?",
            new String [] {"0"},
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC"
    );
Run Code Online (Sandbox Code Playgroud)

问题是,如果联系人有超过1个电话号码,结果将采用以下形式:

id: 451, name: Maria, photoUri: null, has_phone_number: 1, phone_number: 0700 000 000
id: 451, name: Maria, photoUri: null, has_phone_number: 1, phone_number: 0800 000 000
id: 451, name: Maria, photoUri: null, has_phone_number: 1, phone_number: 0900 000 000
Run Code Online (Sandbox Code Playgroud)

由于重复数据,这是不合需要的.

我想只对数据库进行一次查询,希望可以写入以返回结果,如下所示:

id: 451, name: Maria, photoUri: null, has_phone_number: 1, phone_number: 0700 000 000, …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-contacts android-sqlite

5
推荐指数
1
解决办法
898
查看次数

Android-Google Geofence API-获取所有已注册的地理围栏

我想检索系统中当前活动的所有地理围栏的列表。

我有一个列表视图,其中有一个滑块按钮可以打开和关闭每个Geofence

我的问题是,如果没有触发地理围栏并且过期时间已经过去,那么我就无法更新GUI。在调用setExpirationDuration()方法后android自动删除地理围栏时,有什么方法可以获取回调?

我尝试使用数据库来跟踪地理围栏的持续时间和状态(无论是否在系统中),但是当用户重新启动电话时,所有地理围栏都未注册,因此我的应用程序显示地理围栏已注册(因为我尚未注册)即使没有活动的地理围栏,也不会更新数据库。

我尝试在到期时间过去后安排更新GUI的作业,但是如果系统重新启动,此方法也会失败。

有什么办法可以在系统重新启动时运行一些代码,以便可以对数据库进行更改?

谢谢。

android android-sqlite android-geofence

5
推荐指数
0
解决办法
993
查看次数

SQLite:没有这样的表错误Android P问题

直到Android P一切都运行良好我的代码,但现在在Android P我在使用数据库时遇到了很多问题.

我有.db sqlite数据库文件存储在assets文件夹中.我正在将它们导入android的数据库空间,它工作正常,直到Android P.在android P中我得到了这个异常:SQLite: No Such Table Error

我在这里搜索并找到了这个,我试着应用接受的答案: Android P - 'SQLite:没有这样的表错误'从资产复制数据库后

问题是,现在我遇到了另一个问题,但仍然无效.现在我遇到的问题是,每当我尝试检查数据库是否已存在时,此代码始终返回true,因此我从不创建数据库.即使最近安装了应用程序,即使未创建数据库,也是如此:

private boolean checkIfDBExists() {
    File dbFile = new File(DB_COMPLETE_PATH);
    return dbFile.exists();
}
Run Code Online (Sandbox Code Playgroud)

我的源代码是之前引用的stackoverflow问题中接受的答案的源代码.

新的Android P需要获取数据库路径的方法:

public static String getDatabasePath(String fileNname){
    MySQLiteOpenHelper helper = new MySQLiteOpenHelper(ApplicationContextProvider.getContext(), fileNname);
    SQLiteDatabase database = helper.getReadableDatabase();
    String path = database.getPath();
    database.close();
    return path;
}

public class MySQLiteOpenHelper extends SQLiteOpenHelper {
    public MySQLiteOpenHelper(Context context, String databaseName) {
        super(context, databaseName, null, 2);
    }

    @Override
    public void onCreate(SQLiteDatabase db) …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite android-database android-9.0-pie

5
推荐指数
1
解决办法
2201
查看次数