【问题标题】:SQLiteLog no such table in android using Sqllite DatabaseSQLiteLog 在使用 Sqlite 数据库的 android 中没有这样的表
【发布时间】:2016-12-22 12:28:59
【问题描述】:

通过使用资产文件夹,我们正在读取数据,即基于搜索关键字的地址详细信息: 这是我的代码

 private SQLiteDatabase db;
    private Cursor c;
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    et_search = (EditText) findViewById(R.id.et_search);
    img = (ImageView) findViewById(R.id.img_search);
    list = (ListView) findViewById(R.id.list_search);

    db = openOrCreateDatabase("sample", Context.MODE_PRIVATE, null);


    img.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            search_keyword = et_search.getText().toString();
            arr_data = new ArrayList<ListItems>();
            if (isValid()) {
               SELECT_SQL = "SELECT  ROWID AS _id,* FROM Addresses where Type LIKE '%" + search_keyword + "%'";

                Log.d("daatt",SELECT_SQL);
                try {
                    c = db.rawQuery(SELECT_SQL, null);
                    c.moveToFirst();
                    showRecords();

                } catch (SQLiteException e) {
                    Toast.makeText(getApplicationContext(), "No Data", Toast.LENGTH_LONG).show();
                }

            }

        }
    });


}

private void showRecords() {

        String ugName = c.getString(c.getColumnIndex("Name"));
        String ugaddress = c.getString(c.getColumnIndex("Address"));
        String ugtype = c.getString(c.getColumnIndex("Type"));

        ListItems items = new ListItems();

        // Finish reading one raw, now we have to pass them to the POJO
        items.setName(ugName);
        items.setAddress(ugaddress);
        items.setType(ugtype);

        // Lets pass that POJO to our ArrayList which contains undergraduates as type
        arr_data.add(items);
    }
    ListDataAdapter adapter = new ListDataAdapter(arr_data);
    list.setAdapter(adapter);

    if (c != null && !c.isClosed()) {
        int count = c.getCount();
        c.close();
    }

    Log.d("ListData", "" + arr_data);

}


private boolean isValid() {
    if (search_keyword.length() == 0) {
        Toast.makeText(getApplicationContext(), "please enter valid key word", Toast.LENGTH_LONG).show();
        return false;
    }
    return true;
}

对于第一次构建,我们使用列表适配器成功加载了数据 但是在清理项目之后,& 重建项目显示没有这样的表期望

如果我们出错了,请指导我们 提前谢谢

【问题讨论】:

  • 听起来像是 Clean & Build 删除了数据库。您正在重新创建数据库,但它不包含表。所以当你执行语句时,它会抛出 no such table 异常。请务必事先检查数据库是否存在,如果存在,则其中是否存在必要的表。如果没有,请创建它们。

标签: android database sqlite sql-like


【解决方案1】:

据我从您的打印中可以看出,您所指的表称为 ListOfAddress,不是吗?你的 SQL 是:

SELECT_SQL = "SELECT ROWID AS _id,* FROM Addresses where Type LIKE '%" + search_keyword + "%'";

我可能错了,但我会仔细检查查询。

【讨论】:

  • 但在更改代码后相同 SELECT_SQL = "SELECT ROWID AS _id,* FROM ListOfAddress where Type LIKE '%" + search_keyword + "%'";
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多