标签: android-sqlite

没有数据库锁!在android中

我最近得到这个错误我知道原因,但我不知道如何解决它.

这是logcat的错误:

10-05 02:34:00.177: E/SQLiteDatabase(1111): close() was never explicitly called on database '/data/data/standard.internet.marketing.mymovingfriend/databases/mymovingfriend' 
10-05 02:34:00.177: E/SQLiteDatabase(1111): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
10-05 02:34:00.177: E/SQLiteDatabase(1111):     at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943)
10-05 02:34:00.177: E/SQLiteDatabase(1111):     at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)
10-05 02:34:00.177: E/SQLiteDatabase(1111):     at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
10-05 02:34:00.177: E/SQLiteDatabase(1111):     at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051)
10-05 02:34:00.177: E/SQLiteDatabase(1111):     at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:770)
10-05 02:34:00.177: E/SQLiteDatabase(1111):     at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
10-05 02:34:00.177: E/SQLiteDatabase(1111):     at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
10-05 02:34:00.177: E/SQLiteDatabase(1111):     at standard.internet.marketing.mymovingfriend.SQLHandler.open(SQLHandler.java:178)
10-05 02:34:00.177: E/SQLiteDatabase(1111):     at standard.internet.marketing.mymovingfriend.ListMovingNames$1.onClick(ListMovingNames.java:71)
10-05 02:34:00.177: E/SQLiteDatabase(1111):     at android.view.View.performClick(View.java:3511) …
Run Code Online (Sandbox Code Playgroud)

android android-sqlite

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

ActiveAndroid - 未创建任何字段

我只是尝试使用ActiveAndroid.从下面的教程在这里,我设置的一切.我添加了清单条目:

应用程序android:name ="com.activeandroid.app.Application"...

meta-data android:name="AA_DB_NAME" android:value="MyDb.db"
meta-data android:name="AA_DB_VERSION" android:value="1"
Run Code Online (Sandbox Code Playgroud)

并创建了我的模型类:

package com.mycomp.Model;

import org.joda.time.LocalDate;
import org.odata4j.core.Guid;

import com.activeandroid.Model;
import com.activeandroid.annotation.Column;
import com.activeandroid.annotation.Table;

@Table(name = "Table1")
public class Table1 extends Model
{
  @Column(name = "Custom_ID")
  public Guid Custom_ID;
  @Column(name = "Name")
  public String Name;
  @Column(name = "Usr_type")
  public int Usr_type;
  @Column(name = "BDate")
  public LocalDate BDate;

  public MyEnum UserGroup;

  public Table1()
  {
    super();
  }

  public Table1(String name, LocalDate date, Guid custom_id,
      MyEnum userGroup)
  {
    super();
    Name = name;
    BDate …
Run Code Online (Sandbox Code Playgroud)

activeandroid android-sqlite

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

在sqlite中使两列成为唯一的

我有一个有3列的表.列是

BaseColumns._ID | NATIVE_CONTACT_ID | HIDDEN_TYPE
Run Code Online (Sandbox Code Playgroud)

在这些,BaseColumns._ID是一个主要的关键.我想要的是,我不想让开发人员插入重复值NATIVE_CONTACT_ID,如果他试图插入,那么HIDDEN_TYPE对应的列值的旧值NATIVE_CONTACT_ID应该用新值覆盖.

让我更多地澄清你.例如,我的表在几次插入后看起来像这样.

_ID  | NATIVE_CONTACT_ID | HIDDEN_TYPE
---------------------------------------
  1        23                 1
  2        24                 0
  3        25                 1
  4        26                 0
Run Code Online (Sandbox Code Playgroud)

现在,当开发人员想要插入NATIVE_CONTACT_ID值为25且具有HIDDEN_TYPE值的新行时0,旧值HIDDEN_TYPE应更改为此新值.这里它应该改为0from 1,我不想允许重复插入NATIVE_CONTACT_ID.

我希望我能清楚地解释我的问题.

现在我的问题是,我需要使用什么关键字和SQL语句来创建这样的表?

这是我试过的......

    public static final String TABLE_NAME = "hidden_info";
    public static final String HIDDEN_TYPE = "hidden_type";
    public static final String NATIVE_CONTACT_ID = "native_contact_id";
    public static final String _ID = BaseColumns._ID; …
Run Code Online (Sandbox Code Playgroud)

java sql sqlite unique-constraint android-sqlite

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

Sqlite Android Raw查询INSERT INTO不工作

我想在Android中的表中插入一些行,我正在使用它:

INSERT INTO MyTable (Column_1, Column_1) VALUES ('X',100);
Run Code Online (Sandbox Code Playgroud)

查询运行并且不会引发异常,但是当我从中检索所有行时MyTable,不会返回任何行.

我不想使用该insert方法,因为查询是从文件中读取的,我想将它们插入到数据库中.

我的代码出了什么问题?

更新:该rawQuery()方法不运行查询,但execSQL()确实如此.

android android-sqlite

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

在FragmentStatePagerAdapter NPE中运行数据库查询

我正在尝试对我的数据库运行查询以从我的数据库中获取一些数据(这会将页面更改为页面).我在Double balance = db.getSum(); 下面得到一个NullPointerException 是我的fragmentstatepageradapter的完整代码

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;


public class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {

    int listSize;
    String[] tabNames;
    String tabName;
    protected Context mContext;

    /** Constructor of the class */
    public MyFragmentPagerAdapter(FragmentManager fm, Context c) {
        super(fm);
        mContext = c;
    }

    /** This method will be invoked when a page is requested to create */
    @Override
    public Fragment getItem(int arg0) {

        MainFragment mainFragment = new MainFragment();
        final DatabaseHelper db = new DatabaseHelper(mContext); …
Run Code Online (Sandbox Code Playgroud)

android nullpointerexception android-sqlite fragmentstatepageradapter

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

如何将一个长而单一的SQLiteOpenHelper分成几个类,每个表一个

我知道这已经被问过几次了,但是在所有这些问题中,OP和回答者都没有提供清晰的例子。

所以我想问的是是否有这样的课程

public class MyDatabaseDB {

    // database constants
    public static final String DB_NAME = "mydatabase.db";
    public static final int    DB_VERSION = 1;

    // list table constants
    public static final String LIST_TABLE = "list";

    public static final String LIST_ID = "_id";
    public static final int    LIST_ID_COL = 0;

    public static final String LIST_NAME = "list_name";
    public static final int    LIST_NAME_COL = 1;

    // task table constants
    public static final String TASK_TABLE = "task";

    public static final String TASK_ID = "_id"; …
Run Code Online (Sandbox Code Playgroud)

sqlite android sqliteopenhelper android-sqlite

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

合并两个Sqlite数据库并从附加数据库转储数据(无法打开数据库)

我有两个数据库Mydb.dbUpdatedb.db.它们具有相同的结构并且都具有相同的结构Table1.

我想将所有记录添加Updatedb.dbTable1.

有大约25000条记录需要更新.

我用了:

mDataBase.openDataBaseForWrite();
    SQLiteDatabase myInternalDatabase = mDataBase.getDb();
    myInternalDatabase.execSQL("ATTACH DATABASE '" + ATTACH_DB_PATH
            + File.separator + ATTACH_DB_NAME + "' AS New_DB");

    myInternalDatabase
            .execSQL("INSERT INTO ResultMaster SELECT * FROM New_DB.ResultMaster;");
Run Code Online (Sandbox Code Playgroud)

我得到这个例外:

09-16 14:44:32.584: E/AndroidRuntime(2766): FATAL EXCEPTION: main
09-16 14:44:32.584: E/AndroidRuntime(2766): android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database: /mnt/sdcard/AttachDb/backupname.db (code 14)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:727)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64)
09-16 …
Run Code Online (Sandbox Code Playgroud)

performance android android-sqlite

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

从不同的线程同时访问SQLite数据库

这是我的问题.我的应用程序启动了几个线程,每个线程都用于更新特定对象.对象的更新发生在对单个数据库的查询中.有一个数据库和一个OpenHelper.我的应用程序的行为告诉我,对数据库的调用是非同时的,也是我想要的.如何同时从不同的线程访问同一个数据库?如果每个对象的数据都在不同的表中,那么将数据库拆分到多个数据库中会更有效,每个数据库对应一个数据库?

    public class SomethingToBeUpdated implements Runnable {

       private SQLiteDatabase db;

       @Override 
       public void run() {
         db.rawQuery( ... bla bla
       }

    }

    public class MainActivity extends Activity {

       private SomethingToBeUpdated[] list = bla bla...

       @Override
       protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          for( SomethingToBeUpdated x : list ) {
             new Thread(x).start();
          }
       }

    }
Run Code Online (Sandbox Code Playgroud)

multithreading android android-sqlite

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

暂停时更新服务中的活动数据

假设我有一个有数据对象的活动.它根据该对象更新其gui组件.现在让我们说它被暂停(OnPause被调用)但没有停止或破坏

同时,接收到推送通知(启动了intentservice),我需要使用推送通知对象更新该对象,以便在恢复应用程序时更新gui.

我考虑过向活动发送一个广播,以便它可以更新其数据对象但我在某处读到,当活动暂停时,则不会收到广播.

在这种情况下我该怎么办?

android android-contentprovider android-lifecycle android-sqlite

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

如何将SMS消息存储到SQLite数据库?

我想SQLite在收到消息时将消息存储到数据库中。我知道我必须用BroadcastReceiver做这个。但是我不知道该怎么做。onReceive()调用时是否可以将传入的短信存储到数据库中?
请帮我。

sms android broadcastreceiver android-sqlite

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