0

このアプリを作成しましたが、機能せず、解決策が見つかりません。

最初のエラー:

java.lang.illegalstateexception は、カーソル ウィンドウから行 0、列 1 を読み取ることができませんでした。カーソルからデータにアクセスする前に、カーソルが正しく初期化されていることを確認してください

2 番目のエラー:

android.database.sqlite.SQLite 例外: "=" 付近: 構文エラー (コード 1): コンパイル中: SELECT ZAHL1 FROM Verlauf WHERE ID =

package com.example.to_doliste2;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivityT extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_t);
        datasource = new VerlaufDataSource(this);

    }

    private VerlaufDataSource datasource;

    List<Entry> AufgabenListe = new ArrayList<Entry>();

    public void VerlaufKlick(View view)
    {
        try
        {
        String zahl1;
        EditText Feld1 = (EditText)findViewById(R.id.editText1);

        if (Feld1.getText().toString().length() == 0)
                {
            return;
                }

        zahl1 = (Feld1.getText().toString());

        Feld1.setText(String.valueOf(zahl1));




        try
        {
            datasource.open();
            datasource.createEntry(zahl1);
            datasource.close();         
        }
        catch (Exception ex)
        {
            Toast.makeText(this,ex.toString(),Toast.LENGTH_LONG).show();
        }



        AufgabenListe.clear();
        try
        {
            datasource.open();
            AufgabenListe = datasource.getAllEntries();
            datasource.close();
        }
        catch (Exception ex)
        {
            Toast.makeText(this,ex.toString(),Toast.LENGTH_LONG).show();
        }


        ArrayAdapter<Entry> adapterVerlauf = new ArrayAdapter<Entry>(MainActivityT.this, android.R.layout.simple_list_item_1, AufgabenListe);

        ListView lVerlauf = (ListView)findViewById(R.id.listView1);
        lVerlauf.setAdapter(adapterVerlauf);
        }
        catch (Exception ex)
        {
            Toast.makeText(this,ex.toString(),Toast.LENGTH_LONG).show();
        }

    }



}

package com.example.to_doliste2;

    import android.database.sqlite.SQLiteOpenHelper;
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.util.Log;


    public class MySQLHelper extends SQLiteOpenHelper {

        public static final String DATABASE_NAME = "verlaufAufgaben.db";
        public static final int DATABASE_VERSION = 1;

        private static final String TABLE_CREATE_VERLAUF = ""
                +"create table VERLAUF ("
                +" ID integer primary key, "
                +" Zahl1 int) ";

        public MySQLHelper(Context context) 
        {   
            super (context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase database)
        {
            database.execSQL(TABLE_CREATE_VERLAUF);
        }


        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
            Log.w(MySQLHelper.class.getName(),
                    "Upgrading database from version " + oldVersion + "to "
                    + newVersion + ", which all destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS SCANITEM");
            onCreate(db);
        }

    }

package com.example.to_doliste2;

public class Entry {
    private int zahl1;

    public int getZahl1()
    {
        return zahl1;
    }

    public void setZahl1(int zahl1)
    {
        this.zahl1 = zahl1;
    }


    @Override
    public String toString()
    {
        return String.format("%d", zahl1);
    }

}

package com.example.to_doliste2;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class VerlaufDataSource {

    private SQLiteDatabase database;
    private MySQLHelper dbHelper;
    private String[] allColumns = {"ZAHL1"};


    public VerlaufDataSource(Context context)
    {
        dbHelper = new MySQLHelper(context);
    }

    public void open() throws SQLException
    {
        database = dbHelper.getWritableDatabase();
    }

    public void close()
    {
        dbHelper.close();
    }

    public Entry createEntry(String zahl1)
    {
        ContentValues values = new ContentValues();
        values.put("ZAHL1", zahl1);

        long insertId = database.insert("Verlauf", null, values);

        Cursor cursor = database.query("Verlauf", allColumns, "ID = " + insertId, null, null, null, null);
        cursor.moveToFirst();

        return cursorToEntry(cursor);



    }

    protected List<Entry> getAllEntries()
    {
        List<Entry> EntriesList = new ArrayList<Entry>();
        EntriesList = new ArrayList<Entry>();

        Cursor cursor = database.query("Verlauf", allColumns, "ID =" , null, null, null, null, null);
        cursor.moveToFirst();

        if(cursor.getCount() == 0) return EntriesList;

        while (cursor.isAfterLast()==false)
        {
            Entry entry = cursorToEntry(cursor);
            EntriesList.add(entry);
            cursor.moveToNext();
        }

        cursor.close();

        return EntriesList;
    }

    private Entry cursorToEntry(Cursor cursor)
    {
        Entry entry = new Entry();
        entry.setZahl1(cursor.getInt(1));

        return entry;
    }
}
4

2 に答える 2

0

まず、カウントが0から始まり、1つの列()のみをクエリしたため、cursor.getInt(1)内部VerlaufDataSource.cursorToEntry(Cursor)をに変更します。cursor.getInt(0)allColumns == { "ZAHL1" }

第二に、前述のρяσѕρєяK"ID ="は、の正しいWHERE句ではありませんVerlaufDataSource.getAllEntries()nullすべての列が必要な場合は、に変更します。

于 2012-12-27T14:21:40.013 に答える
0

データベースからすべての列を取得する場合は、クエリを次のように変更します。

 Cursor cursor = database.query("Verlauf", 
                           allColumns, null, null, null, null, null);
于 2012-12-26T13:52:14.283 に答える