【问题标题】:Database create in Android在 Android 中创建数据库
【发布时间】:2017-05-02 12:16:47
【问题描述】:
 -------This is my Database activity here i m creating database ----------     

     public void Database_Create(){

    try{
        db = openOrCreateDatabase(Environment.getExternalStorageDirectory()+"/TestExample/Test",MODE_PRIVATE,null);

    }catch (Exception e){

        e.printStackTrace();
    }

}

------ 这是我的 MainActivity ------------------

    try{

        Database dbs = new Database();
        dbs.Database_Create();
        Toast.makeText(dbs, "Data Ok", Toast.LENGTH_SHORT).show();


    }   catch (Exception e){
        e.printStackTrace();
    }

我在 Database Activity 中创建数据库,我想在 MainActivity 中调用 Database_create() 方法,我该如何调用?我收到一个错误 db object is null ,我已经在 manifest.xml 文件中给出了权限

【问题讨论】:

标签: android


【解决方案1】:

首先看看这个doc

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class DBTest extends Activity {
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  SQLiteDatabase myDB= null;
  String TableName = "myTable";

  String Data="";

  /* Create a Database. */
  try {
   myDB = this.openOrCreateDatabase("DatabaseName", MODE_PRIVATE, null);

   /* Create a Table in the Database. */
   myDB.execSQL("CREATE TABLE IF NOT EXISTS "
     + TableName
     + " (Field1 VARCHAR, Field2 INT(3));");

   /* Insert data to a Table*/
   myDB.execSQL("INSERT INTO "
     + TableName
     + " (Field1, Field2)"
     + " VALUES ('Saranga', 22);");

   /*retrieve data from database */
   Cursor c = myDB.rawQuery("SELECT * FROM " + TableName , null);

   int Column1 = c.getColumnIndex("Field1");
   int Column2 = c.getColumnIndex("Field2");

   // Check if our result was valid.
   c.moveToFirst();
   if (c != null) {
    // Loop through all Results
    do {
     String Name = c.getString(Column1);
     int Age = c.getInt(Column2);
     Data =Data +Name+"/"+Age+"\n";
    }while(c.moveToNext());
   }
   TextView tv = new TextView(this);
   tv.setText(Data);
   setContentView(tv);
  }
  catch(Exception e) {
   Log.e("Error", "Error", e);
  } finally {
   if (myDB != null)
    myDB.close();
  }
 }
}

【讨论】:

    【解决方案2】:

    你可以像这样创建你的数据库:

    private SQLiteDatabase db;
    
    private SQLiteDatabase db = openOrCreateDatabase(Environment.getExternalStorageDirectory()+"/TestExample/Test.db", Context.MODE_PRIVATE, null);
    

    【讨论】:

      【解决方案3】:

      这是在 android sqlite 中创建 SQLite 数据库的完整示例。我们需要使用 SQLiteOpenHelper 扩展一个类。并且需要创建一个构造函数来从活动中传递参数。

      public class FlightsDatabase extends SQLiteOpenHelper {
          private Context context;
          public FlightsDatabase(Context context) {
              super(context,"My_Datas",null,1);
              this.context=context;
          }
      

      然后我们需要声明数据库名称,当您希望在发布应用程序后对数据库进行一些更改时,这有 2-3 个选项用于创建数据库和升级数据库版本。 然后我们将创建表为:

      @Override
          public void onCreate(SQLiteDatabase db) {
      
              db.execSQL("CREATE TABLE Flight (id INTEGER PRIMARY KEY AUTOINCREMENT,sr TEXT,today_date TEXT,imei TEXT,too TEXT,fromm TEXT,dept_date TEXT,status1 TEXT,file_url TEXT,plane_pic TEXT,plane_name TEXT,idd TEXT)");
          }
      

      然后您可以对数据库进行搜索、检查数据和删除操作。

      【讨论】:

        猜你喜欢
        • 2023-04-03
        • 1970-01-01
        • 2012-04-09
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 2011-09-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多