1

SQLite データベース列のデータに基づいてグラフを作成したいと考えています。私は achartengine.jar をインストールしました。また、配列内のハードコードされた値でグラフを生成する方法も知っています。しかし、Sqlite データでそれを行う方法がわかりません。これを達成する方法に関するチュートリアルへのリンクを手伝ってくれたり、データベース列を使用できる配列に変換するのを手伝ってくれたりできますか?

助けてくれてありがとう!!

public class ReportGraph extends GraphicalActivity
{

    double[] fQty;
    protected void onCreate(Bundle savedInstanceState) 
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        getIntent();

    }

    public Intent getIntent(Context context)
    {

        FuelStoredInfo reportInfo =new FuelStoredInfo(this);
        reportInfo.open();
        fQty=reportInfo.getReportData(this);
        reportInfo.close();



        CategorySeries series = new CategorySeries("Reports");
        for(int i = 0; i< fQty.length; i++)
        {
            series.add("Report"+(i+1), fQty[i]);

        }   



        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
        dataset.addSeries(series.toXYSeries());
        //dataset.addSeries(series1.toXYSeries());

        //customize bar 1
        XYSeriesRenderer renderer = new XYSeriesRenderer();
        renderer.setDisplayChartValues(true);
        renderer.setChartValuesSpacing((float)0.5);
        renderer.setColor(Color.BLUE);




        XYMultipleSeriesRenderer rRenderer = new XYMultipleSeriesRenderer();
        rRenderer.addSeriesRenderer(renderer);
        rRenderer.setChartTitle("Reports");
        rRenderer.setXTitle("Date");
        rRenderer.setYTitle("Prices");


        Intent i =ChartFactory.getBarChartIntent(context, dataset, rRenderer, Type.DEFAULT);

    return i;

    }


    public double[] getfQty() {
        return fQty;
    }

    public void setfQty(double[] fQty) {
        this.fQty = fQty;



}

FuelStoredInfo.java (データベース)

public FuelStoredInfo open() throws SQLiteException
    {
        OpenDBHelper ourHelper = new openDBHelper(ourContext);
               SQLiteDatabase   ourDatabase = ourHelper.getWritableDatabase();
        return this;

    }

    public double[] getReportData(ReportGraph reportGraph)
        {
            // TODO Auto-generated method stub
            String [] columns = new String[]{KEY_ROW_ID, KEY_KM, KEY_FUEL_QTY, KEY_FUEL_PRICE, KEY_TOTAL_COST, KEY_MILEAGE, KEY_DATE,KEY_TANK_FULL};

             double[] reportList ;
                int i = 0;

                String selectQuery = "SELECT  * FROM fuel_table";

               reportCursor = ourDatabase.rawQuery(selectQuery, null);
                int count = reportCursor.getCount();
                reportList = new double[count];

                if (reportCursor.moveToFirst()) 
                {
                    do {
                        reportList[i] = reportCursor.getDouble(2);
                        i++;

                        } while (reportCursor.moveToNext());
                }


                return reportList;
        }

エラーログ -->

07-23 13:16:11.393: E/AndroidRuntime(991): java.lang.NullPointerException
07-23 13:16:11.393: E/AndroidRuntime(991):  at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
07-23 13:16:11.393: E/AndroidRuntime(991):  at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
07-23 13:16:11.393: E/AndroidRuntime(991):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
07-23 13:16:11.393: E/AndroidRuntime(991):  at com.example.fuelcheck.FuelStoredInfo.open(FuelStoredInfo.java:104)
07-23 13:16:11.393: E/AndroidRuntime(991):  at com.example.fuelcheck.ReportGraph.getIntent(ReportGraph.java:36)
4

1 に答える 1

1

ここにあなたが使用できるサンプルがあります..

public String[] getAllContacts() {
    String[] contactList ;
    int i = 0;
    // Select All Query
    String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS;//You fetch query

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    int count = cursor.getCount();
    contactList = new String[count];
    // looping through all rows and adding to array
    if (cursor.moveToFirst()) {
        do {
            contactList[i] = cursor.getString(0);//getting data from column 0
            i++;
            // Adding contact to list
            } while (cursor.moveToNext());
    }

    // return contact list
    return contactList;
}

列 0 からデータをフェッチしましたが、任意の列をフェッチできます...

お役に立てれば..

于 2013-07-23T07:32:32.533 に答える