小编Raz*_*zor的帖子

使用数据库发送应用程序

如果您的应用程序需要数据库并且它带有内置数据,那么运送该应用程序的最佳方式是什么?我是不是该:

  1. 预先创建SQLite数据库并将其包含在.apk

  2. 在应用程序中包含SQL命令并让它创建数据库并在首次使用时插入数据?

我看到的缺点是:

  1. 可能的SQLite版本不匹配可能会导致问题,我目前不知道数据库应该去哪里以及如何访问它.

  2. 在设备上创建和填充数据库可能需要很长时间.

有什么建议?关于任何问题的文档的指针将不胜感激.

android android-sqlite android-database

948
推荐指数
9
解决办法
23万
查看次数

Android存储SQLite的数据库版本在哪里?

我无法找到Android在SQLite数据库文件中存储数据库版本的位置.数据库版本到底存储在哪里?

database android android-sqlite

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

在SQLiteDatabase.query()中使用String [] selectionArgs

如何使用String[] selectionArgsSQLiteDatabase.query()?我希望我可以把它设置为null,因为我没有用它.我只是尝试将数据库中的整个未排序表加载到Cursor.有关如何实现这一目标的任何建议?

android android-cursor android-sqlite

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

是否曾调用过onUpgrade方法?

是永远叫做的onUpgrade方法SQLiteOpenHelper吗?如果是这样,什么时候被召唤?如果开发人员没有调用它,那为什么呢?这个功能到底发生了什么?我已经看到了删除所有表的示例,但随后评论说放弃所有表并不是你应该做的.有什么建议?

java android android-sqlite

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

使用Cursor获取字段值

我正在创建一个应用程序,我遇到了问题Cursor.当我尝试使用此函数获取值时SQLiteDatabase,我有一个返回给Cursor我:

public Cursor fetchOption(long rowId) throws SQLException {

    Cursor mCursor = mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
        KEY_TITLE, KEY_BODY}, KEY_ROWID + "=" + rowId, null,
        null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;

}
Run Code Online (Sandbox Code Playgroud)

我不知道如何获得该领域的价值Cursor.如果我这样做:

String a = mOptionDb.fetchOption(0).getColumnName(0).toString();
String b = mOptionDb.fetchOption(0).getColumnName(1).toString();
String c = mOptionDb.fetchOption(0).getColumnName(2).toString();
Run Code Online (Sandbox Code Playgroud)

我只获取列(_id, title, body)的名称,但不获取值.有关如何实现这一目标的任何建议?

java android android-sqlite

31
推荐指数
3
解决办法
9万
查看次数

使用多个表的最佳实践

我在我的应用程序中使用了包含多个表的数据库.我有一个XML解析器,需要在解析时将数据写入两个表.我为这两个表创建了两个数据库适配器,但现在我遇到了问题.当我使用一张桌子时,很容易:

FirstDBAdapter firstTable = new FirstDBAdapter(mycontext);
firstTable.open(); // open and close it every time I need to insert something
                   // may be hundreds of times while parsing
                   // it opens not a table but whole DB     
firstTable.insertItem(Item);        
firstTable.close(); 
Run Code Online (Sandbox Code Playgroud)

因为它是一个SAX解析器,在我看来(也许我错了),这将更好:

FirstDBAdapter firstTable = new FirstDBAdapter(mycontext);

@Override
public void startDocument() throws SAXException 
{
    firstTable.open(); // open and close only once
}

...
firstTable.insertItem(Item);
...

@Override
public void endDocument() throws SAXException 
{
    firstTable.close();
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我需要将数据插入第二个表,我该怎么做?例如,如果我有第二个适配器,我认为这将是一个坏主意:

FirstDBAdapter firstTable = new FirstDBAdapter(mycontext);
SecondDBAdapter secondTable = …
Run Code Online (Sandbox Code Playgroud)

database android android-sqlite

30
推荐指数
3
解决办法
3万
查看次数

java.lang.IllegalArgumentException:列'_id'不存在

我正在尝试在真实设备上调试我的应用程序,但是我收到此错误:

ERROR/AndroidRuntime(981):引起:java.lang.IllegalArgumentException:列'_id'不存在

当我在模拟器上进行测试时,不会出现错误.错误在以下代码的最后一行中给出:

adapter = new SimpleCursorAdapter(this, R.layout.list_item, c, new String[] {   
            DataHandlerDB.CONTACT_NAME_COL,
            DataHandlerDB.CONTACT_NUMBER_COL,
            DataHandlerDB.CONTACT_DURATION_COL,
            DataHandlerDB.CONTACT_DATE_COL }, new int[] {
            R.id.contact_name, R.id.phone_number, R.id.duration, R.id.date });
Run Code Online (Sandbox Code Playgroud)

这是我的活动:

public class MyActivity extends Activity {

    private static final String LOG_TAG = "MyActivity";
    private ListView listview;
    private SimpleCursorAdapter adapter;        
    private DataHandlerDB handler;
    private SQLiteDatabase db;
    private OpenHelper helper;
    private Cursor c;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);     
        setContentView(R.layout.main);

        helper = new OpenHelper(this);
        db = helper.getWritableDatabase();
        helper.onCreate(db);
        setBasicContent();
        c.close();
    }   


    @Override
    public void onDestroy(){ …
Run Code Online (Sandbox Code Playgroud)

android android-sqlite

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

SQLiteDiskIOException,错误代码10:磁盘I/O错误

我将SQLite数据库移动到SD卡,但有时会抛出以下异常:

android.database.sqlite.SQLiteDiskIOException: error code 10: disk I/O error
Run Code Online (Sandbox Code Playgroud)

关于如何防止这种情况发生的任何建议?

android android-sqlite

28
推荐指数
1
解决办法
1万
查看次数

获取SQLite FTS3表的行ID

我创建了一个我在Android开发平台中使用的SQLite FTS3表(target2.2并且minVersion是8).例如,我创建了如下表:

create virtual table person using fts3(first,last);
Run Code Online (Sandbox Code Playgroud)

我知道当我将数据插入此表时,我long将返回,这是插入的记录的行ID.如何从此表中获取行ID?如果我执行:

select * from person
Run Code Online (Sandbox Code Playgroud)

我得到-1Cursor.getColumnColumnIndex("rowid");.此外,Cursor.getColumnNames()仅显示两列('first'和'last')而不是'rowid'.关于如何解决这个问题的任何建议?

android fts3 android-sqlite

16
推荐指数
1
解决办法
9254
查看次数

SQLite返回错误代码14

我正在尝试从我的资源文件夹中复制现有数据库并对其执行一些操作.一切正常,但我的模拟器的日志文件中出现以下错误:

sqlite returned: error code = 14, msg = cannot open file at source line 25467

09-06 11:23:41.844: INFO/Database(22560): sqlite returned: error code = 14, msg = cannot open file at source line 25467
09-06 11:23:41.885: ERROR/Database(22560): sqlite3_open_v2("/data/data/com.dhani.Lazy/databases/LazyDB.sqlite", &handle, 1, NULL) failed
09-06 11:23:41.885: WARN/System.err(22560): android.database.sqlite.SQLiteException: unable to open database file
09-06 11:23:41.894: WARN/System.err(22560):     at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
09-06 11:23:41.904: WARN/System.err(22560):     at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1849)
09-06 11:23:41.914: WARN/System.err(22560):     at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
09-06 11:23:41.914: WARN/System.err(22560):     at com.dharani.LazyApple.Database.DataBaseHelper.checkDataBase(DataBaseHelper.java:72)
09-06 11:23:41.914: WARN/System.err(22560):     at com.dharani.LazyApple.Database.DataBaseHelper.createDataBase(DataBaseHelper.java:47)
09-06 11:23:41.914: WARN/System.err(22560): …
Run Code Online (Sandbox Code Playgroud)

database android android-sqlite

16
推荐指数
4
解决办法
4万
查看次数