标签: android-sqlite

SQLite错误代码17

我的SQLite数据库中的一个表是返回以下错误代码:

sqlite返回:错误代码= 17,msg =准备好的语句在32处中止[sql语句]

据我所知,数据已成功插入.这是我应该关注的吗?或者这只是一个错误的错误?根据这篇文章,它说:

数据库架构已更改

究竟是什么意思?有什么建议?

sqlite android android-sqlite

6
推荐指数
1
解决办法
3453
查看次数

从我清除Application中的数据时删除了Sqlite数据库

我Sqlite在app中创建了数据库.当从我清楚数据settings->applications->manage applications的Sqlite删除分贝.保持sqlite数据库原样的任何建议.

android application-management android-sqlite

6
推荐指数
1
解决办法
8382
查看次数

GreenDao深度查询n:m关系

我在我的应用程序中有一个这样设计的关系: 关系描述 我正在尝试选择至少有一个用户作为朋友的所有聊天.

基本上,我想执行此查询:

SELECT c.* FROM CHAT c, USER u, UserChats uc 
  WHERE c.type = myType 
  AND u.isFriend = 1 
  AND c.id = uc.chatId 
  AND u.id = uc.userId
Run Code Online (Sandbox Code Playgroud)

我还没有找到办法在GreenDao图书馆中执行此操作,并希望有人能够帮助我.

编辑:
这是我现在所拥有的:

List<UsersChats> list = usersChatsDao.queryDeep(
    "WHERE T0." + UserDao.Properties.isFriend.collumnName + " = ? "+
    "AND T1." + ChatDao.Properties.type.collumName + " = ?",
    new String[] {"1", myType});

if(list != null && list.isEmpty() == false) {
    List<Chat> chats = new ArrayList<Chat>();
    for(UsersChats link : list) {
        chats.add(link.getChat());
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-sqlite greendao

6
推荐指数
1
解决办法
3191
查看次数

java - java.lang.IllegalStateException:无法从CursorWindow读取第0行col -1

我正在创建一个使用SQLiteDatabase来存储项目的应用程序ListView.但是,在填充数据库中的数据时出现错误ListView,应用程序崩溃.

这是我的数据库 -

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 NotesDatabase extends SQLiteOpenHelper {

private static final String NOTE_NAME = "name";
private static final String NOTE_ID = "id";
private static final String NOTE_SUBJECT = "subject";

private static final String DATABASE_NAME = "notesDatabase";
private static final String TABLE_NOTES = "notes";
private static final int DATABASE_VERSION = 1;
private static final String CREATE_NOTES_TABLE = "CREATE TABLE " + TABLE_NOTES …
Run Code Online (Sandbox Code Playgroud)

java sqlite android sqliteopenhelper android-sqlite

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

Android SQLiteOpenHelper - 每个表的不同类?

我正在阅读这篇文章(http://www.vogella.com/tutorials/AndroidSQLite/article.html),以了解Android应用程序中的SQLite数据库.

在文章中他有一个提示:

最好为每个表创建一个单独的类.此类定义静态onCreate()和onUpgrade()方法.这些方法在SQLiteOpenHelper的相应方法中调用.这样,即使您有多个表,SQLiteOpenHelper的实现仍然可读.

如果我正确理解了这个提示,我应该为我的数据库中的每个表都有一个类?

这真的是最好的做法吗?

如果是这样,那么使用多个表的复杂查询呢?如果创建在不同的类中,我该如何管理?

如何正确保存数据库版本?对于每个表的更改,我会更改数据库版本号吗?

谢谢

sqlite android android-sqlite

6
推荐指数
1
解决办法
2865
查看次数

Android SQLite替代品

我正在构建一个简单的Android RPG.每位玩家最多可以获得约50名士兵.每个士兵都有一些统计数据(等级,hp,攻击等)和三个库存槽.游戏中只有大约100个项目可以填充这些库存位置.我希望建立一个关系数据库,它有一个士兵表,一个拥有物品的表,以及一些其他各种表.

速度是我的主要关注点.SQLite是明显的首选.但是,它看起来非常笨重,并且面向具有1000行的数据库.小型数据库有更好的选择吗?我不需要复杂的查询或任何东西,只是一种存储数据并将其备份到服务器的方法.

sqlite android database-performance android-sqlite

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

尝试使用OrmLite创建或更新对象时出现异常

我正在开发一个Android应用程序,它使用createOrUpdate方法将对象添加到SQLite数据库.

这是抛出的异常(不一致):

Caused by: android.database.sqlite.SQLiteReadOnlyDatabaseException:attempt to write a
           readonly database (code 1032)
Run Code Online (Sandbox Code Playgroud)

清单权限包括WRITE_EXTERNAL_STORAGE.

这个异常似乎发生在2个地方,不一致,但每次执行这个try/catch时:

try {
    getDatabaseHelper().getAccountDao().createOrUpdate(aAccount);
} catch (SQLException e) {
    CrashlyticsLog.e(LOGTAG, "Encountered a problem when attempting to synchronize local "
                     + "database with login response object", e);
}
Run Code Online (Sandbox Code Playgroud)

我们从Application类中检索DatabaseHelper的实例:

public DatabaseHelper getDatabaseHelper() {
   if (databaseHelper == null) {
      databaseHelper = OpenHelperManager.getHelper(this, DatabaseHelper.class);
   }
   return databaseHelper;
}
Run Code Online (Sandbox Code Playgroud)

这是完整的堆栈跟踪(我更改了包名称):

java.sql.SQLException: Unable to run insert stmt on object com.example.Account@3bca6:
        INSERT INTO `accounts` (`id` ,`logo` ,`company` ,`subdomain` ,`plan_id` ,
        `plan_expires` ,`timezone_id` ,`timezone_name` …
Run Code Online (Sandbox Code Playgroud)

java android ormlite android-sqlite

6
推荐指数
0
解决办法
673
查看次数

SQLiteOpenHelper多个内存数据库

android.database.sqlite.SQLiteOpenHelper如果其构造函数的name参数为null:1,则提供使用内存数据库的能力:

字符串:数据库文件的字符串,或者对于内存数据库为null

如果SQLiteOpenHelper使用nullname参数多次实例化,它们是否访问相同的内存数据库,或者每次都创建一个单独的内存数据库?

android sqliteopenhelper android-sqlite

6
推荐指数
1
解决办法
802
查看次数

拖放后,将RecyclerView项目的新位置存储在SQLite中

我有一个二维ArrayList类型String,它是适配器类的输入RecyclerView.每次onResume()调用时,列表中的数据都来自SQLite数据库.我已经实现了拖放功能和一个onMove()成功交换列表元素的功能.但是,我需要在onResume()调用之前存储修改后的列表,这将重写列表并用旧位置填充它.我的猜测是在onStop()事件中实现重写功能.这是我的主要活动:

RecyclerView recyclerView;
RecyclerViewAdapter adapter;
RecyclerView.LayoutManager layoutManager;

ArrayList<ArrayList<String>> data;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    assert fab != null;
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(MainActivity.this, ViewDbActivity.class);
            startActivity(i);
        }
    });

    recyclerView = (RecyclerView) findViewById(R.id.myRecyclerView);
    layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);
    RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator();

    ItemTouchHelper item …
Run Code Online (Sandbox Code Playgroud)

android drag-and-drop android-sqlite android-recyclerview

6
推荐指数
1
解决办法
1993
查看次数

在SQLite中使用datetime来获取本月和上个月的值

我有一个跟踪花钱的应用程序.我有一个功能,可以在本月和上个月花掉所有的钱.它是一个或另一个,而不是两者.它基于以下参数调用lastMonth.

每笔交易金额都带有交易日期进入我的表格.我使用SQL查询来总计它.像这样:

 if (!lastMonth) {

            query += "WHERE ("
                        + "CAST(" + MySQLiteHelper.COLUMN_GAS_UNIX_TIMESTAMP + " AS INT)/1000 >= CAST(strftime('%s', date('now','start of month')) AS INT)  "
                        + "AND "
                        + " CAST(" + MySQLiteHelper.COLUMN_GAS_UNIX_TIMESTAMP + " AS INT)/1000 < CAST(strftime('%s', date('now','start of month','+1 month')) AS INT) ); ";

            } else {

                query += "WHERE ("
                        + "CAST(" + MySQLiteHelper.COLUMN_GAS_UNIX_TIMESTAMP + " AS INT)/1000 BETWEEN CAST(strftime('%s', datetime('now','start of month', '-1 month')) AS INT)  "
                        + "AND CAST(strftime('%s', date('now','start of month')) …
Run Code Online (Sandbox Code Playgroud)

sql sqlite android android-sqlite

6
推荐指数
1
解决办法
780
查看次数