无法从SQLite检索数据

时间:2013-02-14 07:52:30

标签: java android eclipse sqlite

请查看以下代码

DatabaseHandler.java

用于检索数据的代码

public List<String> getAllBranches() {
        // TODO Auto-generated method stub

        String selectQuery = "select city from BranchNetwork";

        Cursor cursor = database.rawQuery(selectQuery, null);
        List <String>branches = new ArrayList<String>();

        if(cursor.isFirst())
        {
            do
            {

            }
            while(cursor.moveToNext());

            Toast.makeText(context, "Data Retrieved: "+branches.get(1), Toast.LENGTH_LONG).show();
        }

        return branches;
    }

用于插入数据的代码

public String insertData(String city, String streetAddress,String phoneNumber1, String phoneNumber2, String email) 
    {
        String insertQuery = "insert into BranchNetwork ('city','streetAddress','phoneNumber1','phoneNumber2','email') values('"+city+"','"+streetAddress+"','"+phoneNumber1+"','"+phoneNumber2+"','"+email+"');";




        try
        {  
            database.execSQL(insertQuery);


            return "Data Successfully Inserted";

        }
        catch(Exception e)
        {
            Toast.makeText(context, "Exception: "+e.getMessage(), Toast.LENGTH_LONG).show();
            return "Data Insertion Failed";
        }

    }

Form.java

第一个活动。在这里,我检索数据并插入数据。以下是我检索数据的方法

public class Form extends Activity {
    private List<String>branches = new ArrayList<String>();
        private DatabaseConnector databaseConnector;
    String[]arr;


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

            databaseConnector = DatabaseHandler.getInstance(this);
            databaseConnector.createConnection();

            branches = databaseConnector.getAllBranches();

             arr = branches.toArray(new String[branches.size()]);
    }
}

但是,我什么都没得到!在DatabaseHandler.java中,我创建了一个Toast,它应该在检索代码时生成一条消息。但它没有产生任何东西!我将数据加载到ListView但它也是空的!为什么是这样?请帮忙!

PS: 以下是DatabaseConnector.java,即DatabaseHandler的插入面

package com.example.esoftcallmanager;

import java.util.List;

import android.content.Context;

public interface DatabaseConnector 
{
    public void createConnection();
    public void closeConnection();
    public String getPhoneNumber();
    public String insertData(String city, String streetAddress, String phoneNumber1, String phoneNumber2, String email);
    public List<String>getAllBranches();

}

5 个答案:

答案 0 :(得分:2)

如果您确定数据库已有数据,请尝试将if(cursor.isFirst())更改为if(cursor.moveToFirst())

答案 1 :(得分:1)

尝试cursor.moveToFirst()条件

if(cursor.moveToFirst())
    {
        do
        {

        }
        while(cursor.moveToNext());

        Toast.makeText(context, "Data Retrieved: "+branches.get(1), Toast.LENGTH_LONG).show();
    }

答案 2 :(得分:1)

那是因为你并没有真正对数据做任何事情。

首先,你必须自己将光标的位置移动到第一位:cursor.moveToFirst() 之后,您可以在尝试时启动while循环。

其次,您实际上从未将数据放入List分支中,您必须先将光标中的数据放在那里。

答案 3 :(得分:1)

希望这有效。

public List<String> getAllBranches() {
            // TODO Auto-generated method stub

            String selectQuery = "select city from BranchNetwork";
            Cursor cursor = database.rawQuery(selectQuery, null);
            List <String>branches = new ArrayList<String>();

             if(cursor != null){
              cursor.moveToFirst();

               Toast.makeText(context, "Data Retrieved: ", Toast.LENGTH_LONG).show();

              do
                {

                }
                while(cursor.moveToNext());



             }



                return branches;
        }

答案 4 :(得分:0)

您忘记在列表数组中添加数据。 试试如下:

  String selectQuery = "select city from BranchNetwork";
    Cursor cursor = database.rawQuery(selectQuery, null);
    List <String> branches = new ArrayList<String>();
    String str=null;
    cursor.moveToFirst();
        do
       {
         str= m_cursor.getString(m_cursor.getColumnIndex("city"));
          branches.add(str);
       }
        while(cursor.moveToNext());
        Toast.makeText(context, "Data Retrieved: "+branches.get(1), Toast.LENGTH_LONG).show();
    }
        return branches;