java - Android - 类型未定义的 Sqlite 数据库方法

标签 java android sqlite

我在这个应用程序中有一个类应该创建和使用数据库,但 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/

相关文章:

java - Android:如何将日期舍入到下一小时的 00

android - 在 Android 中以结构化模式使用 Volley 库

ios - 无法查看使用 coredata 生成的 sqlite 文件中的记录

c++ - 在 C++ 中使用 SQLite : object function as a callback

c# - 如何在 C# 中找到以编程方式运行应用程序的路径

java - 返回没有Remove方法的迭代器

java - 阻止 OSX 自动调整 JComboBox 大小?

java - 如何通过控制台将非英文文件名传递给java主参数?

android - 使用 Android SDK 将 CSV 文件上传为 Google 表格

android - 为 Android 发布登录 gradle.properties