当前位置: 首页 > 知识库问答 >
问题:

无法从SQLite数据库检索数据

秦安怡
2023-03-14

我想从数据库中检索名称。但我总是收到错误:

字符串名称=helper.getProductNameT(cur);

public View getView(int position, View convertView, ViewGroup parent) {
                View tmpView = super.getView(position, convertView, parent);
                Log.i(CN, "getView:" + position);

                final CheckBox cBox = (CheckBox) tmpView.findViewById(R.id.checkD);

                Item tag = (Item) cBox.getTag();

                cBox.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Cursor cur = null;
                        String name2;
                        Item tag = (Item) v.getTag();
                        if (tag == null)
                            Log.i(CN, "checkbox clicked no tag");

                        else

                                //Cursor c=helper.getProductDirect(String.valueOf(tag.id));

                                Log.i(CN, "checkbox clicked tag=" + tag.id);
                                helper.open();

                                cur=helper.getProductDirect(String.valueOf(tag.id));
                                String name=helper.getProductNameT(cur);

                                try{



                                }catch(Exception e){
                                    Log.e("error", e.toString());
                                }
                                //helper.insertProduct3(list,2, "name");



                        if (cBox.isChecked()) {
                            Log.i(CN, " Checked!");
                            // do some operations here




                            helper.insertProduct3(list,2, "go");
                        } else {
                            Log.i(CN, "NOT Checked!");
                            // do some operations here
                            //helper.updateStatusUnCheck(tag.id);



                        }
                        // notifyDataSetChanged();

                        Intent start = new Intent(AddProductDirect.this,
                                productClass.class);
                    //  start.putExtra(ID_EXTRA, String.valueOf(list));
                        //startActivity(start);
                    }

                });

                return tmpView;
            }

数据库Java语言

public Cursor getProductDirect(String id) {
                String[] arg={id};

                // TODO Auto-generated method stub

                    return (database.rawQuery("SELECT " + SQLiteHelper.product_id
                            + " as _id," + SQLiteHelper.productBar + ","
                            + SQLiteHelper.productName + " ," + SQLiteHelper.productDesp
                            + "," + SQLiteHelper.productQtty + ","
                            + SQLiteHelper.productPrice + ","
                            + SQLiteHelper.productTotalPrice + ","
                            + SQLiteHelper.product_FId + "," + SQLiteHelper.product_Image
                            + "," + SQLiteHelper.product_ShoppingF + ","
                            + SQLiteHelper.product_Status + " FROM "
                            + SQLiteHelper.productTable + " WHERE "+SQLiteHelper.product_id+"=?",arg));



            }
    public String getProductNameT(Cursor c) {
            // TODO Auto-generated method stub
            return ((c.getString(2)));
        }

它不断返回错误

android.database.CursorIndexOutOfBoundsException:请求索引-1,大小为1,字符串名称=helper.getProductNameT(cur);

有人知道我的编码哪里出错了吗?

共有1个答案

漆雕稳
2023-03-14

您忘记在从返回的游标上调用moveToFirst()database.raw查询

cur=helper.getProductDirect(....);
if(cur.moveToFirst()){
   /*
   String name=helper.getProductNameT(cur);    
   ... rest code goes here ...
   */
}
 类似资料:
  • 关于我的上一个问题,我想从创建的sqlite数据库中检索ID,将其作为Intent putExtra()中的数据传递,以便将其用作PendingContent的ID。getActivity()。目前,我正在使用queryNumEntries为从我的DatabaseManager中的以下代码添加到数据库中的每个提醒设置id。类别: 并在AddActivity中调用它。班 在创建条目时,除了尝试此操作

  • 所以我根据YouTube上的教程创建了一个房间数据库。我有两个栏day and likes,每个栏都有int.目前,我已经用三行数据手动填充了数据库。 下面是手动填充数据库的代码: 在我的Dao类中,我当前有Insert、Update、deleteAll和getall...方法。这里是道: } 现在,我要从Room数据库中检索基于当天的数据。所以我想要第6天的likes数,它是1。我想检索数据并将

  • 我试图显示一个零件的"loc",如果它的零件号我给。以下是数据结构的样子: 活动代码: getLoc是Product类的getter函数,它返回给定curP对应的“loc”。curP部分表示子值。 逻辑对我来说似乎是正确的,但我没有得到输出。我哪里出了问题?

  • 我是在Android应用程序中使用SQL的新手,并且我在更新使用listView创建的表时遇到了一些麻烦。我设法从listView中更新了一个元素,但它不是正确的元素,它总是列表中的第一个元素发生了变化。 我制作了一个只有一列的表(稍后我将添加更多的两列),下面是我如何构建它: TaskContract_Faltas.java TaskDbHelper_Faltas Faltas.java 我使用

  • 我正在两个标记之间画一条路线,我想保存那条路线。为此,我将包含lat和lng的ArrayList保存在Firebase数据库中。但我在取回航路点时遇到了问题。我是这样插入的: 在检索数据时,我尝试执行以下操作:

  • 问题内容: 我尝试从资产目录复制SQLite数据库,以便以后访问。但是我做不到! DatabaseHelper很简单: 尝试了一切!我尝试玩扩展!但是我仍然收到一个错误:复制数据库时出错: 我检查了模拟器,我的文件在那里,所以我应该可以写它!请任何帮助!真让我发疯! UPD 我试图将其放在SD卡上,并且可以正常工作。但仍然无法理解为什么我无法将其写入应用程序数据文件夹。 问题答案: 我使用此助手,