我在这个应用程序中有一个类应该创建和使用数据库,但 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();
}
});
}
}
感谢您的帮助!
最佳答案
我建议你使用 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();
有可能:)
关于java - Android - 类型未定义的 Sqlite 数据库方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4591765/