Android - метод базы данных Sqlite не определен тип fot - PullRequest
2 голосов
/ 04 января 2011

У меня есть класс в этом приложении, который должен создавать и использовать базу данных, но Eclipse говорит мне, что методы sqlite не определены.

Кажется, это проблема контекста, но я не понимаю, какисправить, могу ли я расширить другой класс вместо Activity?

package com.android.userdata;

import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

 public class getdata extends Activity {

  private final String MY_DATABASE_NAME = "DataStore";
        private final String MY_DATABASE_TABLE = "UserData";

     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.userdata);

         SQLiteDatabase myDB = null;
            /* Create the Database (no Errors if it already exists) */
            this.createDatabase(MY_DATABASE_NAME, 1, MODE_PRIVATE, null);
            myDB = this.openDatabase(MY_DATABASE_NAME, null);

            myDB.execSQL("CREATE TABLE IF NOT EXISTS "
                    + MY_DATABASE_TABLE
                    + " (LastName VARCHAR, FirstName VARCHAR,"
                    + " Country VARCHAR, Age INT(3));");

         Button btn = (Button) findViewById(R.id.confirm);
         btn.setOnClickListener(new OnClickListener() {
          @Override
          public void onClick(View v) {
           Toast.makeText(getdata.this, "Hai Premuto il Pulsante", Toast.LENGTH_SHORT).show();
          }
         });
     }
}

Спасибо за вашу помощь!

Ответы [ 2 ]

2 голосов
/ 04 января 2011

Я предлагаю вам использовать SQLiteOpenHelper.

Автоматически создается БД, если она недоступна ...

пример кода:

 public class DatabaseHelper extends SQLiteOpenHelper {
     private static final int DB_VERSION = 1;
     private static final String DB_NAME = "myDB.db";

     public DatabaseHelper(Context ctx) {
         super(ctx, DB_NAME, null, DB_VERSION);
     }

     @Override
     public void onCreate(SQLiteDatabase db) {
         String query = "CREATE TABLE myTable(_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER NOT NULL)";
         db.execSQL(query);
         db.close();
     }

     @Override
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
         ...
     }
}

Используйте это так:

...
DatabaseHelper helper = new DatabaseHelper(context);
SQLiteDatabase db = helper.getWritableDatabase();
...

Я думаю, что это проще, и вам не нужно заботиться о том, что БД уже существует.

Надеюсь, это поможет:)

EDIT:

У меня есть идея ... может быть, невозможно дать эту строку, как вы делаете ... попробуйте собрать строку раньше. Как это:

String query = "YOUR SQL STATEMENT";
db.execSQL(query);
db.close();

Есть возможность:)

0 голосов
/ 04 января 2011

Если по какой-либо причине вам необходимо хранить материал вашей базы данных в расширенном классе Activity, вы должны определить частный класс, подобный этому, в своем классе деятельности getdata:


private static class DatabaseHelper extends SQLiteOpenHelper {
  .. see Beasly's code example
}    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...