簡體   English   中英

如何在Android應用程序中使用SQLite?

[英]How can I use SQLite in android application?

如何確保創建了表,以及如何在android中找到數據庫? 我運行了這段代碼,但它僅在我的表中存儲一條記錄。 如何解決這個問題? 我創建了兩個類

頭等艙:

 public class dataAccess {
     private SQLiteDatabase database;
     private sqliteHelper dbHelper;

     public dataAccess(Context context) 
     {
          dbHelper = new sqliteHelper(context);
     }

     public void open() throws SQLException 
     {
       database = dbHelper.getWritableDatabase();
     } 

     public void close() 
     {
        dbHelper.close();
     }

     public void createDoctorInfo(String FirstName ,String LastName) 
     {
        ContentValues values = new ContentValues();
        values.put(sqliteHelper.FirstName, FirstName);
        values.put(sqliteHelper.LastName, LastName);

        database.insert(sqliteHelper.TABLE_DoctorInfo, null, values);
     }


}

第二類:

public class sqliteHelper extends SQLiteOpenHelper
{
      public static final String TABLE_DoctorInfo = "DoctorInfo";
      public static final String DoctorId = "_id";
      public static final String FirstName = "FirstName";
      public static final String LastName = "LastName";


      private static final String DATABASE_NAME = "Medical.db";
      private static final int DATABASE_VERSION = 1;

      // Database creation sql statement
      private static final String DATABASE_CREATE = " CREATE TABLE "
      + TABLE_DoctorInfo + "("+DoctorId + " INTEGER PRIMARY KEY AUTOINCREMENT, "
 + FirstName + " TEXT NOT NULL ," +LastName +" TEXT NOT NULL);" ;

      public sqliteHelper(Context context)
      {
          super(context, DATABASE_NAME, null, DATABASE_VERSION);
      }


    @Override
     public void onCreate(SQLiteDatabase database)
    {
        database.execSQL(DATABASE_CREATE);  

    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2)
    {


}

主要活動:

public class MainActivity extends Activity {

    EditText  fname,lname;
    Button confirm,view;
    dataAccess da=new dataAccess(this);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        da.open();
        fname=(EditText)findViewById(R.id.fname);
        lname=(EditText)findViewById(R.id.lname);
        confirm=(Button)findViewById(R.id.confirm);
        view=(Button)findViewById(R.id.view);

         confirm.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                saveDoctorInfo();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    public void saveDoctorInfo(){

      String fn=fname.getText().toString();
       String ln=lname.getText().toString();


       //save Info into DB
      da.createDoctorInfo(fn,ln);
      //close Conection 
      da.close();
      Toast.makeText(getBaseContext(), "Data Has been saved successfully", Toast.LENGTH_LONG).show();

    }

}

這是我的xml文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/fnamet"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="41dp"
        android:layout_marginTop="35dp"
        android:text="@string/first_name" />

    <EditText
        android:id="@+id/fname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/fnamet"
        android:layout_marginLeft="36dp"
        android:layout_marginTop="16dp"
        android:ems="10"
        android:inputType="textPersonName" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/lnamet"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/fname"
        android:layout_below="@+id/fname"
        android:layout_marginTop="30dp"
        android:text="@string/last_name" />

    <Button
        android:id="@+id/confirm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/lnamet"
        android:layout_below="@+id/lname"
        android:layout_marginLeft="24dp"
        android:layout_marginTop="50dp"
        android:text="@string/confirm" />

    <Button
        android:id="@+id/view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/confirm"
        android:layout_below="@+id/confirm"
        android:layout_marginTop="36dp"
        android:text="@string/view" />

    <EditText
        android:id="@+id/lname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/lnamet"
        android:layout_below="@+id/lnamet"
        android:layout_marginTop="18dp"
        android:ems="10"
        android:inputType="textPersonName" />


</RelativeLayout>

如何確保創建我的表

通過使用方便的開放式助手。 它可以幫助您打開與完全初始化的數據庫( getWritableDatabase )的連接。 這包括從頭開始創建數據庫,並在需要時升級數據庫模式。 您唯一需要做的就是指定要在onCreateonUpgrade運行的SQL命令。

我在哪里可以找到我在android中的數據庫

您無需關心確切的路徑。 它在您的應用程序私有數據目錄中。 DATABASE_NAME = "Medical.db" -在典型設備上-將導致
/data/data/your.package.name/databases/Medical.db

它只在我的表中存儲一條記錄如何解決此類問題

更改onCreate部分。 但是請注意,一旦創建了數據庫,打開的幫助程序將不會嘗試重新創建它。 您要么需要擦除應用程序數據,要么需要告訴Open Helper版本已更改。 然后它將調用onUpgrade ,您可以使用它刪除舊表定義/更改它們/ ...

嘗試參考該問題的答案,這對創建數據庫和插入值有很大幫助。 鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM