2011-01-04 8 views
2

このアプリケーションでデータベースを作成して使用するクラスがありますが、Eclipseではsqliteメソッドが定義されていないことを教えています。Android - Sqliteデータベースメソッド未定義のfotタイプ

状況の問題と思われますが、修正する方法がわかりません。アクティビティではなく別のクラスを拡張する必要がありますか?

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

SQLiteOpenHelperを使用することをお勧めします。

それが利用できない場合はDBを作成するために、自動的に気...

コード例:

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(); 
... 

私は思います簡単ですし、DBがすでに存在するかどうか気にする必要はありません。

・ホープ、このことができます:)

EDIT:

私はアイデアを持っているが...多分それはあなたがやっているように、この文字列を与えることはできません...前に文字列を構築しよう。このよう :

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

が可能です:)

+0

あなたの助けに感謝、しかし、私は、私はSQL構文の中にはないことだ...エラーが –

+0

SRYここで私も知りません理解していません。私はそれが一般的にそのような問題を避ける方法だと思っただけです。あなたはそれを試した? **答えに私の編集を参照してください** – Beasly

+0

@Marco Faionは助けましたか? – Beasly

0

あなたが何らかの理由で活動する拡張クラス内データベースの材料を保持する必要がある場合、あなたは函Activityクラス内このようなプライベートなクラスを定義します:


private static class DatabaseHelper extends SQLiteOpenHelper { 
    .. see Beasly's code example 
}