有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法从SQLite检索数据

请看一下下面的代码

数据库处理程序。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";
        }

    }

形式。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中,但它也是空的!这是为什么?请帮忙

附言: 下面是DatabaseConnector。java,DatabaseHandler的插入面

package com.example.esoftcallmanager;

import java.util.List;

import 安卓.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) 个答案

  1. # 1 楼答案

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

      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;
    
  2. # 2 楼答案

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

    首先,您必须将光标的位置移动到第一个位置:光标。moveToFirst() 之后,你可以开始一个while循环

    其次,你永远不会把数据放在你的列表分支中,你必须先把光标上的数据放在那里

  3. # 3 楼答案

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

  4. # 4 楼答案

    希望这能奏效

    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;
            }
    
  5. # 5 楼答案

    试试光标。moveToFirst()条件

    if(cursor.moveToFirst())
        {
            do
            {
    
            }
            while(cursor.moveToNext());
    
            Toast.makeText(context, "Data Retrieved: "+branches.get(1), Toast.LENGTH_LONG).show();
        }