使用sqlite db填充列表

时间:2011-12-12 09:42:02

标签: sqlite blackberry

如何在Blackberry应用程序中使用SQLite数据库中的数据填充列表?我可以查看列表,但是我只能看到一个项目,它是列表中我的数据库表中的最后一项。以下是代码:

import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;

import net.rim.device.api.database.Database;
import net.rim.device.api.database.DatabaseFactory;
import net.rim.device.api.database.Row;
import net.rim.device.api.database.Statement;
import net.rim.device.api.io.URI;

class ListFieldScreen extends MainScreen
{

  Database d;

    public ListFieldScreen() 
    {
      final ObjectListField list = new ObjectListField();
                try
                {

                   URI myURI=URI.create("file:///SDCard/Databases/MyTestDatabase.db");
                   d=DatabaseFactory.open(myURI);
                   Statement st=d.createStatement("SELECT eng FROM English");
                   st.prepare();
                   net.rim.device.api.database.Cursor c=st.getCursor();
                   Row r;

                   while(c.next())
                   {

                    r=c.getRow();
                    String w=r.getString(0);
                    String[] t={w};
                        list.set(t); 
                       add(list);                        
                   }


                   st.close();
                   d.close();
                   }
                     catch ( Exception e ) {         
          e.printStackTrace();
                      }                      


    }
    }

2 个答案:

答案 0 :(得分:1)

试试这样: 首先声明为

public Vector tableVector;
public ObjectListField list;

并在单独的方法中调用以下代码;

 tableVector=new Vector();//Declare this before the method;
    try
    {
        //Uri creation
        Statement st=LoadingScreen.database.createStatement("YOUR Statement");          
        st.prepare();
        Cursor c = st.getCursor();

        Row r;           
        while(c.next()) 
        {

            r = c.getRow();                
            tableVector.addElement(r.getString(0));
        }
        st.execute();           
        st.close();         
    }
    catch(Exception e)
    {
        //Exception;
    }

完成此方法后;将数据显示为......

String ar[]=new String[tableVector.size];
for(int i=0;i<tableVector.size;i++)
{
    ar[i]=tableVector.elementAt(i).toString();
}
list.set(ar);
add(list);

答案 1 :(得分:0)

我想您需要指定要在列表中显示的项目数 - 我的意思是来自db的数量 -