为了账号安全,请及时绑定邮箱和手机立即绑定

android.database.sqlite.SQLiteException:

android.database.sqlite.SQLiteException:

UYOU 2022-08-03 12:55:55
我正在研究这个项目,如果应用程序处于离线状态,数据将被保存到SQLite。但是当我构建和运行时,我得到这个错误。我也重新检查了SQL查询。但无法得到确切的问题是什么。主要活动.javapublic class MainActivity extends AppCompatActivity {    RecyclerView recyclerView;    EditText name;    RecyclerView.LayoutManager layoutManager;    RecyclerAdapter recyclerAdapter;    ArrayList<Contact> arrayList=new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        recyclerView=findViewById(R.id.recyclerView);        name=findViewById(R.id.name);        layoutManager=new LinearLayoutManager(this);        recyclerView.setLayoutManager(layoutManager);        recyclerView.setHasFixedSize(true);        recyclerAdapter=new RecyclerAdapter(arrayList);        recyclerView.setAdapter(recyclerAdapter);        readfromlite();    }private void readfromlite()    {        arrayList.clear();        DbHelper dbHelper=new DbHelper(this);        SQLiteDatabase database=dbHelper.getReadableDatabase();        Cursor cursor=dbHelper.readlite(database);         while (cursor.moveToNext())         {             String name=cursor.getString(cursor.getColumnIndex(DbContract.NAME));             int sync_status= cursor.getInt(cursor.getColumnIndex(DbContract.sync_status));             arrayList.add(new Contact(name,sync_status));         }        recyclerAdapter.notifyDataSetChanged();         cursor.close();         dbHelper.close();}DBHelper.javapublic class DbHelper extends SQLiteOpenHelper {    private static final int dbversion=1;    private static final String ctable= " create TABLE if not EXISTS " + DbContract.tname + " (id integer primary key autoincrement, " + DbContract.NAME + " text , " + DbContract.sync_status + " integer ) ; " ;    private static final String dtable= " drop table if EXISTS " + DbContract.tname ;
查看完整描述

3 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

此行生成语法错误的 sql 语句:

String selection=DbContract.NAME+"LIKE?";

如果将类似“Bob”的值作为参数传递,则结果将为:
(而不是 ),并将被视为列名。nameLIKEBobname LIKE 'Bob'nameLIKEBob

您需要像这样插入空格:

String selection=DbContract.NAME+" LIKE ?";


查看完整回答
反对 回复 2022-08-03
?
ITMISS

TA贡献1871条经验 获得超8个赞

我遇到了同样的问题,但它是从表中删除一列,所以当我更改它时


db.delete(cons.tableNames[3], Cart.KEY_f+"=$valueToChange", null)

为此


db.delete(cons.tableNames[3], Cart.KEY_f + "  LIKE  '%" + valueToChange + "%' ", null)

我像这样做更新


fun updateCart(id: Int, mBusiness: Business) {

    val db = dbHelper.writableDatabase

    // New value for one column

    val valueToChange = mBusiness.e

    val values = ContentValues().apply {

        put(Business.KEY_e, valueToChange)

    }


    db.update(cons.tableNames[p.mReturnIntSP(meuContexto, cons.tablePosition)], values, "id=$id", null)

    db.close() // Closing database connection

}


查看完整回答
反对 回复 2022-08-03
?
POPMUISE

TA贡献1765条经验 获得超5个赞

将数据库版本从 1 更改为 201。

它现在正在工作。我实际上不知道版本号与解决方案有什么关系。希望有人给出一个解释。干杯。


查看完整回答
反对 回复 2022-08-03
  • 3 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号