Что не так с моим кодом при доступе к базе данных SQLite? - PullRequest
0 голосов
/ 27 февраля 2011

Я следую учебному пособию по android SQLiteDatabase для Android, и когда здесь нажимаю кнопку подсчета, это работает, но для меня это не так.Я добавил немного попробовать метон, чтобы посмотреть, что происходит, но это все еще не работает.вот мой код:

public class MyDatabasaDemo extends Activity {
    private static final String DATABASE_NAME = "JADB.db";
    private static final String DATABASE_TABLE = "myTable";
    private static final String DATABASE_CREATE = "create table"+ DATABASE_TABLE;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button butCreate = (Button) findViewById(R.id.myButCreate);
        Button butAdd = (Button) findViewById(R.id.myButAdd);
        Button butCount = (Button) findViewById(R.id.myButCount);
        Button butShow = (Button) findViewById(R.id.myButShow);

        butCreate.setOnClickListener(new OnClickListener(){

            public void onClick(View arg0) {
                SQLiteDatabase myDB;
                try{
                myDB = openOrCreateDatabase(DATABASE_NAME,Context.MODE_PRIVATE,null);
                myDB.execSQL(DATABASE_CREATE);
                myDB.close();

                Toast.makeText(getApplicationContext(), "Table Creat", Toast.LENGTH_SHORT).show();

                }catch(SQLException e){
                    Toast.makeText(getApplicationContext(), "SQLException", Toast.LENGTH_SHORT);

                }
            }

        });

        butAdd.setOnClickListener(new OnClickListener(){

            public void onClick(View arg0) {
                SQLiteDatabase myDB;

                myDB = openOrCreateDatabase(DATABASE_NAME,Context.MODE_PRIVATE,null);

                ContentValues newRow = new ContentValues();
                newRow.put("col1", "ok");
                myDB.insert(DATABASE_TABLE, null, newRow);

                myDB.close();


                Toast.makeText(getApplicationContext(), "row added", Toast.LENGTH_SHORT).show();

            }

        });


        butCount.setOnClickListener(new OnClickListener(){

            public void onClick(View arg0) {
                SQLiteDatabase myDB;

                myDB = openOrCreateDatabase(DATABASE_NAME,Context.MODE_PRIVATE,null);

                String[] resultColumns = new String[]{"_id","col1"};

        Cursor allRows = myDB.query(DATABASE_TABLE, resultColumns, null, null, null, null, null, null);

                myDB.close();

                Integer c = allRows.getCount();

                Toast.makeText(getApplicationContext(), "count: "+c.toString(), Toast.LENGTH_SHORT).show();

            }

        });
    }

база данных создана, но всплывающее сообщение внутри кнопки не работает, поэтому мне интересно, не закрывается ли она.

1 Ответ

1 голос
/ 27 февраля 2011

Вы пытаетесь создать таблицу без столбцов, а затем вставляете запись.Вам следует изменить создание базы данных sql:

private static final String COLUMN_ID = "_id";
private static final String COLUMN_NAME = "col1";
private static final String DATABASE_CREATE = "create table "+ DATABASE_TABLE +" ("+
    COLUMN_ID + " integer primary key autoincrement, " +
    COLUMN_NAME +" text not null"
    +");";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...