2011-01-04 3 views
2

이 응용 프로그램에서는 데이터베이스를 만들고 사용해야하지만 이클립스는 sqlite 메서드가 정의되지 않았다고합니다.안드로이드 - Sqlite 데이터베이스 메서드 정의되지 않은 fot 유형

상황에 맞는 것으로 보이지만 문제를 해결하는 방법을 이해하지 못하고 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

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가 이미 존재하는지 신경 쓸 필요가 없습니다.

희망이 도움이 :)

편집 : ... 어쩌면 당신이하고있는 것처럼이 문자열을 제공 할 수 없습니다 나는 아이디어가

... 전에 문자열을 구축하려고 . 이처럼 는 :

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

는 가능성 : 당신이 어떤 이유 클래스 확장 액티비티 내에서 데이터베이스 자료를 보관해야하는 경우

+0

도움을 주셔서 감사합니다. 그러나 어디에서 오류인지 이해할 수 없습니다. –

+0

Sry 나도 몰라 ... 나는 SQL 구문에 그다지 빠지지 않습니다. 나는 단지 그것이 일반적으로 그러한 문제를 피하는 방법이라고 생각했다. 너 시도 했니? ** 답변에 내 편집을 참조하십시오 ** – Beasly

+0

@ Marco Faion 그것이 도움이 되었습니까? – Beasly

0

, 당신은 당신의 GetData의 활동 클래스 내에서이 같은 개인 클래스를 정의 할 것입니다 :


private static class DatabaseHelper extends SQLiteOpenHelper { 
    .. see Beasly's code example 
}  
관련 문제