Android – Sqlite数据库方法undefined fot类型

我在这个应用程序中有一个应该创建和使用数据库的类,但是Eclipse告诉我sqlite方法是未定义的。

似乎是一个上下文问题,但我不明白如何修复,让我扩展一个不同的类而不是活动?

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

谢谢你的帮助!

我建议你使用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(); ... 

我认为它更容易,你不需要关心数据库是否已经存在。

希望这可以帮助 :)

编辑:

我有一个想法…也许不可能像你一样给这个字符串…尝试之前构建字符串。 喜欢这个:

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

有可能:)

如果由于某种原因需要将数据库材料保存在Activity扩展类中,则需要在getdata Activity类中定义这样的私有类:

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