标签: android-sqlite

更新 SQLite Android 列的所有行

我是 sqlite 的新手,但我确实尝试自己解决这个问题:我在 stackoverflow 上尝试了各种教程和答案,但没有成功。您可能认识该代码。我找不到我理解或可以用于我的案例的代码示例。

我有一个应用程序,用户可以通过输入以下内容来创建角色:他们的名字、姓氏、年龄。

用户可以按 + 1 年,在这种情况下,我希望年龄列中的所有整数都增加 1 并向用户显示。所有角色显然都应该老一岁。这是我无法在我的应用程序中完成的。

您能否告诉我应该如何修改代码来完成我想要的事情,您能否解释一下您的代码是如何工作的?

MainActivity.java:

public class MainActivity extends Activity {

ListView lv;
EditText firstnameTxt,familynameTxt,ageTxt;
Button savebtn,retrieveBtn,yearBtn;
ArrayList<String> characters=new ArrayList<String>();

ArrayAdapter<String> adapter;

String updatedAge;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    firstnameTxt=(EditText) findViewById(R.id.firstnameTxt);
    familynameTxt=(EditText) findViewById(R.id.familynameTxt);
    ageTxt=(EditText) findViewById(R.id.ageTxt);

    savebtn=(Button) findViewById(R.id.saveBtn);
    retrieveBtn=(Button) findViewById(R.id.retrievebtn);
    yearBtn=(Button) findViewById(R.id.yearBtn);

    lv=(ListView) findViewById(R.id.listView1);
    lv.setBackgroundColor(Color.LTGRAY);

    adapter=new ArrayAdapter<String>(this,android.R.layout.simple_selectable_list_item,characters);

    final DatabaseHelper db=new DatabaseHelper(this);

    //EVENTS
    savebtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            //OPEN
            db.openDB();

            //INSERT …
Run Code Online (Sandbox Code Playgroud)

java sqlite android sql-update android-sqlite

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

FTS4 上的 SQLite Android Join 操作

Table1是虚拟表,其中fts4TABLE2normal table

查询1 (有效)

 SELECT * FROM TABLE1 LEFT OUTER JOIN TABLE2 ON TABLE1.id=TABLE2.id WHERE TABLE1 MATCH 'sometext' LIMIT %d,%d
Run Code Online (Sandbox Code Playgroud)

查询 2(不起作用)

SELECT * FROM TABLE2 LEFT OUTER JOIN TABLE1 ON TABLE1.id=TABLE2.id WHERE TABLE1 MATCH 'sometext' LIMIT %d,%d
Run Code Online (Sandbox Code Playgroud)

查询 2 出错

android.database.sqlite.SQLiteException:无法在请求的上下文中使用函数 MATCH(代码 1)

由此看来,FTS 表需要首先出现在 LEFT OUTER JOIN 上。为什么会发生这种情况?连接首先发生在应用 WHERE 子句之前。因此,如果它不适用于表类型不匹配,我假设它也不适用于 query1。请任何人解释一下这一点。内部发生了什么?另外,任何指向参考站点的链接都将不胜感激,以解释这一点。

sqlite android fts4 android-sqlite

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

E/SQLiteLog: (1) 没有这样的表:示例

数据库助手

public class DatabaseHelper extends SQLiteOpenHelper
{
public static final  String DBNAME = "sample.sql";
public static final String DBLOCATION = null;/*"/data/data/com.example.final_view.database/databases/"*/
public static final int DATABASE_VERSION = 3;
public static final String TABLE_NAME = "sample";
public static final String S_BUSSTOP_ID="BUSSTOP_ID";
public static final String S_BUSSTOP_NAME="BUSSTOP_NAME";
public static final String S_NAME_E="NAME_E";
public static final String S_LONGITUDE="LONGITUDE";
public static final String S_LATITUDE="LATITUDE";
public static final String S_ARS_ID="ARS_ID";
public static final String S_NEXT_BUS="NEXT_BUS";
public static final String S_NUM="NUM";
public static final String S_STATION_LIST_ID="STATION_LIST_ID"; …
Run Code Online (Sandbox Code Playgroud)

android sqliteopenhelper android-sqlite

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

sqlite 错误 SQLiteException:表用户没有名为的列

在此处将数据插入 sqlite 时出错是堆栈跟踪

E/SQLiteDatabase: Error inserting addhar_number=test profile_pic=null token=null name=Nikhil Patil email=niks34547@gmail.com phone=  profile_pic_bg=null gender=test birthday=test
                                                                                   android.database.sqlite.SQLiteException: table user has no column named addhar_number (code 1): , while compiling: INSERT INTO user(addhar_number,profile_pic,token,name,email,phone,profile_pic_bg,gender,birthday) VALUES (?,?,?,?,?,?,?,?,?)
                                                                                       at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                                                                                       at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
                                                                                       at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
                                                                                       at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
                                                                                       at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
                                                                                       at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
                                                                                       at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1472)
                                                                                       at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1343)
                                                                                       at com.wowoni.bikesharing.bicyclesharing.Helper.SQliteHandler.addUser(SQliteHandler.java:88)
                                                                                       at com.wowoni.bikesharing.bicyclesharing.activity.HomeActivity.loadNavHeader(HomeActivity.java:227)
                                                                                       at com.wowoni.bikesharing.bicyclesharing.activity.HomeActivity.onCreate(HomeActivity.java:129)
                                                                                       at android.app.Activity.performCreate(Activity.java:6684)
                                                                                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2652)
                                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2766)
                                                                                       at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1507)
                                                                                       at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                       at android.os.Looper.loop(Looper.java:154)
                                                                                       at android.app.ActivityThread.main(ActivityThread.java:6229)
                                                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891) …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite

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

在房间持久库中无法使用 like 子句

我在我的项目中使用房间持久库。我试图在查询中使用“like”子句,但我无法使用。我已经尝试过编译时 (Query) 和运行时查询 (Raw Query)。它既没有给出任何异常,也没有给出任何输出。

我尝试了以下方法,但都没有奏效:-

  1. 编译时间查询 -

    @Query("select * from recipe where type_of_diet like '%vegetarian%' ")
    public abstract DataSource.Factory<Integer, RecipeListPojo> 
    getRecipeListVeg();
    
    Run Code Online (Sandbox Code Playgroud)
  2. 原始查询 -

    @RawQuery(observedEntities = RecipeListPojo.class)
    public abstract DataSource.Factory<Integer,RecipeListPojo> 
    getAllRecipesList(SupportSQLiteQuery sqLiteQuery);
    
    String query="select * from recipe  where type_of_diet like '%vegetarian%' ";
    SimpleSQLiteQuery simpleSQLiteQuery = new SimpleSQLiteQuery(query);
    recipeDao.getAllRecipesList(simpleSQLiteQuery);
    
    Run Code Online (Sandbox Code Playgroud)

compileSdkVersion 27

使用的库 - 实现 "android.arch.persistence.room:runtime:1.1.0-beta3" annotationProcessor "android.arch.persistence.room:compiler:1.1.0-beta3"

请让我知道如何运行这些类型的查询。

android android-sqlite android-room android-architecture-components

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

将房间数据库导出到json文件

是否可以将所有房间数据库以及所有表、条目导出到 json 文件?我看到一些使用 SQLite 完成的示例,但是 Room 数据库怎么样?

sqlite android android-sqlite android-room

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

房间搜索查询

当我想使用房间查询在数据库中搜索用户时,我必须输入全名才能获得结果。如何在数据库中逐字母搜索?

    @Query("SELECT * FROM database WHERE name LIKE :search")
    fun find(search:String?):List<User>
Run Code Online (Sandbox Code Playgroud)

android android-sqlite android-room

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

如何将长类型值插入到 SQLite

我有一个像这样的纪元时间值1549251913000,我将此值保存到 SQLite。我创建如下表:

CREATE TABLE TABLE_BOOKMARK (COLUMN_ID INTEGER PRIMARY KEY AUTOINCREMENT, COLUMN_TITLE TEXT, COLUMN_SOURCE TEXT, COLUMN_DATEANDTIME INTEGER, COLUMN_GUID TEXT);
Run Code Online (Sandbox Code Playgroud)

该值COLUMN_DATEANDTIMEINTEGER类型无关。但当我获取该值时,它与我的预期不符。就变成这样了-1231280856。请给我一些建议,谢谢

我已经尝试过这个解决方案,但当我从 SQLite 获取它时仍然不匹配(似乎它不能解决我的问题)

android android-sqlite

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

如何将sqlite base复制到android模拟器?

sqlite基础文件存储在路径data/data/my-package-name/databases/mybase.db(Android模拟器存储SQLite数据库在哪里?

有时,我在远程真实设备上获取此文件,我想将其复制到我的 Android Studio 上的 android 模拟器进行调试。换句话说,我希望我在 Android Studio 上的应用程序使用这个基础。我该怎么做?

另一种可能性:如何将这个基地复制到我通过 USB 电缆连接到 PC 的真实设备上

非常感谢,问候

sqlite android android-emulator android-sqlite android-studio

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

由于未找到列,房间数据库崩溃

当运行查询以从房间数据库返回一些数据时,我在 API 23 物理设备上遇到此崩溃。

逻辑猫

E/AndroidRuntime: FATAL EXCEPTION: arch_disk_io_2
java.lang.RuntimeException: Exception while computing database live data.
    at androidx.room.RoomTrackingLiveData$1.run(RoomTrackingLiveData.java:92)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
    at java.lang.Thread.run(Thread.java:818)
 Caused by: java.lang.IllegalArgumentException: column '`allOrNothing`' does not exist
    at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:333)
    at androidx.room.util.CursorUtil.getColumnIndexOrThrow(CursorUtil.java:108)
    at com.example.persistence.dao.DaoPieChart_Impl$2.call(DaoPieChart_Impl.java:169)
    at com.example.persistence.dao.DaoPieChart_Impl$2.call(DaoPieChart_Impl.java:164)
    at androidx.room.RoomTrackingLiveData$1.run(RoomTrackingLiveData.java:90)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
    at java.lang.Thread.run(Thread.java:818) 
Run Code Online (Sandbox Code Playgroud)

我已经浏览了表格和模型,但看不到问题所在。列名明确存在。

桌子

@Entity (tableName = "tableDistortedThinking")
public class TableDistortedThinking {

@PrimaryKey(autoGenerate = true)
private long pkDistortedThinking;

@ColumnInfo(name = "reframingId")
private long fkReframingId;

@ColumnInfo(name = "userId")
private long fkUserId;

@ColumnInfo(name = "allOrNothing")
private …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite android-room

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