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 }