Android-SQLite 데이터베이스

SQLite는 장치의 텍스트 파일에 데이터를 저장하는 오픈 소스 SQL 데이터베이스입니다. Android에는 SQLite 데이터베이스 구현이 내장되어 있습니다.

SQLite는 모든 관계형 데이터베이스 기능을 지원합니다. 이 데이터베이스에 액세스하기 위해 JDBC, ODBC 등과 같은 연결을 설정할 필요가 없습니다.

데이터베이스-패키지

기본 패키지는 자체 데이터베이스를 관리하기위한 클래스가 포함 된 android.database.sqlite입니다.

데이터베이스-생성

데이터베이스를 생성하려면 데이터베이스 이름과 모드를 매개 변수로 사용하여이 메서드를 openOrCreateDatabase를 호출하면됩니다. 자신의 개체에서 받아야하는 SQLite 데이터베이스의 인스턴스를 반환하며 구문은 아래와 같습니다.

SQLiteDatabase mydatabase = openOrCreateDatabase("your database name",MODE_PRIVATE,null);

이 외에도 데이터베이스 패키지에서이 작업을 수행하는 다른 기능을 사용할 수 있습니다. 아래에 나열되어 있습니다.

Sr. 아니요 방법 및 설명
1

openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags, DatabaseErrorHandler errorHandler)

이 방법은 적절한 플래그 모드로 기존 데이터베이스 만 엽니 다. 공통 플래그 모드는 OPEN_READWRITE OPEN_READONLY 일 수 있습니다.

2

openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags)

위의 방법과 유사하게 기존 데이터베이스를 열어도 데이터베이스의 오류를 처리하는 핸들러를 정의하지 않습니다.

openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory)

열릴뿐만 아니라 존재하지 않는 경우 데이터베이스를 생성합니다. 이 메서드는 openDatabase 메서드와 동일합니다.

4

openOrCreateDatabase(File file, SQLiteDatabase.CursorFactory factory)

이 방법은 위의 방법과 비슷하지만 파일 객체를 문자열이 아닌 경로로 사용합니다. file.getPath ()와 동일합니다.

데이터베이스-삽입

SQLiteDatabase 클래스에 정의 된 execSQL 메서드를 사용하여 테이블을 생성하거나 테이블에 데이터를 삽입 할 수 있습니다. 구문은 다음과 같습니다.

mydatabase.execSQL("CREATE TABLE IF NOT EXISTS TutorialsPoint(Username VARCHAR,Password VARCHAR);");
mydatabase.execSQL("INSERT INTO TutorialsPoint VALUES('admin','admin');");

그러면 데이터베이스의 테이블에 일부 값이 삽입됩니다. 동일한 작업을 수행하지만 몇 가지 추가 매개 변수를 취하는 또 다른 방법은 다음과 같습니다.

Sr. 아니요 방법 및 설명
1

execSQL(String sql, Object[] bindArgs)

이 메서드는 데이터를 삽입 할뿐만 아니라 bind 인수를 사용하여 데이터베이스에있는 기존 데이터를 업데이트하거나 수정하는데도 사용됩니다.

데이터베이스-가져 오기

Cursor 클래스의 객체를 사용하여 데이터베이스에서 무엇이든 검색 할 수 있습니다. rawQuery라는이 클래스의 메서드를 호출하고 커서가 테이블을 가리키는 결과 집합을 반환합니다. 커서를 앞으로 이동하여 데이터를 검색 할 수 있습니다.

Cursor resultSet = mydatbase.rawQuery("Select * from TutorialsPoint",null);
resultSet.moveToFirst();
String username = resultSet.getString(0);
String password = resultSet.getString(1);

Cursor 클래스에는 데이터를 효과적으로 검색 할 수있는 다른 함수가 있습니다. 그것은 포함

Sr. 아니요 방법 및 설명
1

getColumnCount()

이 메서드는 테이블의 총 열 수를 반환합니다.

2

getColumnIndex(String columnName)

이 메서드는 열 이름을 지정하여 열의 인덱스 번호를 반환합니다.

getColumnName(int columnIndex)

이 메서드는 열의 인덱스를 지정하여 열의 이름을 반환합니다.

4

getColumnNames()

이 메서드는 테이블의 모든 열 이름 배열을 반환합니다.

5

getCount()

이 메서드는 커서의 총 행 수를 반환합니다.

6

getPosition()

이 메서드는 테이블에서 커서의 현재 위치를 반환합니다.

7

isClosed()

이 메서드는 커서가 닫혀 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.

데이터베이스-도우미 클래스

데이터베이스와 관련된 모든 작업을 관리하기 위해 도우미 클래스가 제공되었으며 SQLiteOpenHelper라고합니다. 데이터베이스 생성 및 업데이트를 자동으로 관리합니다. 구문은 다음과 같습니다.

public class DBHelper extends SQLiteOpenHelper {
   public DBHelper(){
      super(context,DATABASE_NAME,null,1);
   }
   public void onCreate(SQLiteDatabase db) {}
   public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {}
}

다음은 SQLite 데이터베이스 사용을 보여주는 예입니다. 연락처를 삽입, 삭제 및 수정할 수있는 기본 연락처 애플리케이션을 만듭니다.

이 예제를 실험하려면 카메라가 지원되는 실제 장치에서이를 실행해야합니다.

단계 기술
1 Android 스튜디오를 사용하여 com.example.sairamkrishna.myapplication 패키지 아래에 Android 애플리케이션을 만듭니다.
2 src / MainActivity.java 파일을 수정하여 모든 XML 구성 요소의 참조를 가져오고 listView에 연락처를 채 웁니다.
데이터베이스 작업을 관리 할 새로운 src / DBHelper.java 생성
4 화면에 연락처를 표시 할 DisplayContact.java로 새 활동을 작성하십시오.
5 res / layout / activity_main을 수정하여 각 XML 구성 요소를 추가하십시오.
6 res / layout / activity_display_contact.xml을 수정하여 각 XML 구성 요소를 추가하십시오.
7 res / values ​​/ string.xml을 수정하여 필요한 문자열 구성 요소를 추가합니다.
8 res / menu / display_contact.xml을 수정하여 필요한 메뉴 구성 요소를 추가합니다.
9 res / menu / mainmenu.xml로 새 메뉴를 만들어 연락처 삽입 옵션을 추가합니다.
10 애플리케이션을 실행하고 실행중인 Android 기기를 선택하고 여기에 애플리케이션을 설치하고 결과를 확인합니다.

다음은 수정 된 내용입니다. MainActivity.java.

package com.example.sairamkrishna.myapplication;

import android.content.Context;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;

import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends ActionBarActivity {
   public final static String EXTRA_MESSAGE = "MESSAGE";
   private ListView obj;
   DBHelper mydb;
   
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      mydb = new DBHelper(this);
      ArrayList array_list = mydb.getAllCotacts();
      ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1, array_list);
      
      obj = (ListView)findViewById(R.id.listView1);
      obj.setAdapter(arrayAdapter);
      obj.setOnItemClickListener(new OnItemClickListener(){
         @Override
         public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
            // TODO Auto-generated method stub
            int id_To_Search = arg2 + 1;
            
            Bundle dataBundle = new Bundle();
            dataBundle.putInt("id", id_To_Search);
            
            Intent intent = new Intent(getApplicationContext(),DisplayContact.class);
            
            intent.putExtras(dataBundle);
            startActivity(intent);
         }
      });
   }
   
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_main, menu);
      return true;
   }
   
   @Override
   public boolean onOptionsItemSelected(MenuItem item){
      super.onOptionsItemSelected(item);
      
      switch(item.getItemId()) {
         case R.id.item1:Bundle dataBundle = new Bundle();
         dataBundle.putInt("id", 0);
         
         Intent intent = new Intent(getApplicationContext(),DisplayContact.class);
         intent.putExtras(dataBundle);
         
         startActivity(intent);
         return true;
         default:
         return super.onOptionsItemSelected(item);
      }
   }
   
   public boolean onKeyDown(int keycode, KeyEvent event) {
      if (keycode == KeyEvent.KEYCODE_BACK) {
         moveTaskToBack(true);
      }
      return super.onKeyDown(keycode, event);
   }
}

다음은 연락처 활동 표시의 수정 된 내용입니다. DisplayContact.java

package com.example.sairamkrishna.myapplication;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;

import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class DisplayContact extends Activity {
   int from_Where_I_Am_Coming = 0;
   private DBHelper mydb ;
   
   TextView name ;
   TextView phone;
   TextView email;
   TextView street;
   TextView place;
   int id_To_Update = 0;
   
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_display_contact);
      name = (TextView) findViewById(R.id.editTextName);
      phone = (TextView) findViewById(R.id.editTextPhone);
      email = (TextView) findViewById(R.id.editTextStreet);
      street = (TextView) findViewById(R.id.editTextEmail);
      place = (TextView) findViewById(R.id.editTextCity);

      mydb = new DBHelper(this);

      Bundle extras = getIntent().getExtras(); 
      if(extras !=null) {
         int Value = extras.getInt("id");
         
         if(Value>0){
            //means this is the view part not the add contact part.
            Cursor rs = mydb.getData(Value);
            id_To_Update = Value;
            rs.moveToFirst();
            
            String nam = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_NAME));
            String phon = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_PHONE));
            String emai = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_EMAIL));
            String stree = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_STREET));
            String plac = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_CITY));
            
            if (!rs.isClosed())  {
               rs.close();
            }
            Button b = (Button)findViewById(R.id.button1);
            b.setVisibility(View.INVISIBLE);

            name.setText((CharSequence)nam);
            name.setFocusable(false);
            name.setClickable(false);

            phone.setText((CharSequence)phon);
            phone.setFocusable(false); 
            phone.setClickable(false);

            email.setText((CharSequence)emai);
            email.setFocusable(false);
            email.setClickable(false);

            street.setText((CharSequence)stree);
            street.setFocusable(false); 
            street.setClickable(false);

            place.setText((CharSequence)plac);
            place.setFocusable(false);
            place.setClickable(false);
         }
      }
   }
   
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      Bundle extras = getIntent().getExtras(); 
      
      if(extras !=null) {
         int Value = extras.getInt("id");
         if(Value>0){
            getMenuInflater().inflate(R.menu.display_contact, menu);
         } else{
            getMenuInflater().inflate(R.menu.menu_main menu);
         }
      }
      return true;
   }

   public boolean onOptionsItemSelected(MenuItem item) { 
      super.onOptionsItemSelected(item); 
      switch(item.getItemId()) { 
         case R.id.Edit_Contact: 
         Button b = (Button)findViewById(R.id.button1);
         b.setVisibility(View.VISIBLE);
         name.setEnabled(true);
         name.setFocusableInTouchMode(true);
         name.setClickable(true);

         phone.setEnabled(true);
         phone.setFocusableInTouchMode(true);
         phone.setClickable(true);

         email.setEnabled(true);
         email.setFocusableInTouchMode(true);
         email.setClickable(true);

         street.setEnabled(true);
         street.setFocusableInTouchMode(true);
         street.setClickable(true);

         place.setEnabled(true);
         place.setFocusableInTouchMode(true);
         place.setClickable(true);

         return true; 
         case R.id.Delete_Contact:

         AlertDialog.Builder builder = new AlertDialog.Builder(this);
         builder.setMessage(R.string.deleteContact)
            .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                  mydb.deleteContact(id_To_Update);
                  Toast.makeText(getApplicationContext(), "Deleted Successfully", 
                     Toast.LENGTH_SHORT).show();  
                  Intent intent = new Intent(getApplicationContext(),MainActivity.class);
                  startActivity(intent);
               }
         })
         .setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
               // User cancelled the dialog
            }
         });
			
         AlertDialog d = builder.create();
         d.setTitle("Are you sure");
         d.show();

         return true;
         default: 
         return super.onOptionsItemSelected(item); 
 
      } 
   } 

   public void run(View view) {	
      Bundle extras = getIntent().getExtras();
      if(extras !=null) {
         int Value = extras.getInt("id");
         if(Value>0){
            if(mydb.updateContact(id_To_Update,name.getText().toString(),
               phone.getText().toString(), email.getText().toString(), 
				   street.getText().toString(), place.getText().toString())){
               Toast.makeText(getApplicationContext(), "Updated", Toast.LENGTH_SHORT).show();	
               Intent intent = new Intent(getApplicationContext(),MainActivity.class);
               startActivity(intent);
            } else{
               Toast.makeText(getApplicationContext(), "not Updated", Toast.LENGTH_SHORT).show();	
            }
         } else{
            if(mydb.insertContact(name.getText().toString(), phone.getText().toString(), 
				   email.getText().toString(), street.getText().toString(), 
				   place.getText().toString())){
                  Toast.makeText(getApplicationContext(), "done",
						   Toast.LENGTH_SHORT).show();	
            } else{
               Toast.makeText(getApplicationContext(), "not done", 
					   Toast.LENGTH_SHORT).show();	
            }
            Intent intent = new Intent(getApplicationContext(),MainActivity.class);
            startActivity(intent);
         }
      }
   }
}

다음은 Database 클래스의 내용입니다. DBHelper.java

package com.example.sairamkrishna.myapplication;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase;

public class DBHelper extends SQLiteOpenHelper {

   public static final String DATABASE_NAME = "MyDBName.db";
   public static final String CONTACTS_TABLE_NAME = "contacts";
   public static final String CONTACTS_COLUMN_ID = "id";
   public static final String CONTACTS_COLUMN_NAME = "name";
   public static final String CONTACTS_COLUMN_EMAIL = "email";
   public static final String CONTACTS_COLUMN_STREET = "street";
   public static final String CONTACTS_COLUMN_CITY = "place";
   public static final String CONTACTS_COLUMN_PHONE = "phone";
   private HashMap hp;

   public DBHelper(Context context) {
      super(context, DATABASE_NAME , null, 1);
   }

   @Override
   public void onCreate(SQLiteDatabase db) {
      // TODO Auto-generated method stub
      db.execSQL(
         "create table contacts " +
         "(id integer primary key, name text,phone text,email text, street text,place text)"
      );
   }

   @Override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
      // TODO Auto-generated method stub
      db.execSQL("DROP TABLE IF EXISTS contacts");
      onCreate(db);
   }

   public boolean insertContact (String name, String phone, String email, String street,String place) {
      SQLiteDatabase db = this.getWritableDatabase();
      ContentValues contentValues = new ContentValues();
      contentValues.put("name", name);
      contentValues.put("phone", phone);
      contentValues.put("email", email);	
      contentValues.put("street", street);
      contentValues.put("place", place);
      db.insert("contacts", null, contentValues);
      return true;
   }
   
   public Cursor getData(int id) {
      SQLiteDatabase db = this.getReadableDatabase();
      Cursor res =  db.rawQuery( "select * from contacts where id="+id+"", null );
      return res;
   }
   
   public int numberOfRows(){
      SQLiteDatabase db = this.getReadableDatabase();
      int numRows = (int) DatabaseUtils.queryNumEntries(db, CONTACTS_TABLE_NAME);
      return numRows;
   }
   
   public boolean updateContact (Integer id, String name, String phone, String email, String street,String place) {
      SQLiteDatabase db = this.getWritableDatabase();
      ContentValues contentValues = new ContentValues();
      contentValues.put("name", name);
      contentValues.put("phone", phone);
      contentValues.put("email", email);
      contentValues.put("street", street);
      contentValues.put("place", place);
      db.update("contacts", contentValues, "id = ? ", new String[] { Integer.toString(id) } );
      return true;
   }

   public Integer deleteContact (Integer id) {
      SQLiteDatabase db = this.getWritableDatabase();
      return db.delete("contacts", 
      "id = ? ", 
      new String[] { Integer.toString(id) });
   }
   
   public ArrayList<String> getAllCotacts() {
      ArrayList<String> array_list = new ArrayList<String>();
      
      //hp = new HashMap();
      SQLiteDatabase db = this.getReadableDatabase();
      Cursor res =  db.rawQuery( "select * from contacts", null );
      res.moveToFirst();
      
      while(res.isAfterLast() == false){
         array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_NAME)));
         res.moveToNext();
      }
      return array_list;
   }
}

다음은의 내용입니다 res/layout/activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<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:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textView"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:textSize="30dp"
      android:text="Data Base" />

   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials Point"
      android:id="@+id/textView2"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:textSize="35dp"
      android:textColor="#ff16ff01" />

   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:layout_below="@+id/textView2"
      android:layout_centerHorizontal="true"
      android:src="@drawable/logo"/>

   <ScrollView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/scrollView"
      android:layout_below="@+id/imageView"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_alignParentBottom="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true">
        
      <ListView
         android:id="@+id/listView1"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_centerHorizontal="true"
         android:layout_centerVertical="true" >
      </ListView>
		
   </ScrollView>

</RelativeLayout>

다음은의 내용입니다 res/layout/activity_display_contact.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/scrollView1"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   tools:context=".DisplayContact" >

   <RelativeLayout
      android:layout_width="match_parent"
      android:layout_height="370dp"
      android:paddingBottom="@dimen/activity_vertical_margin"
      android:paddingLeft="@dimen/activity_horizontal_margin"
      android:paddingRight="@dimen/activity_horizontal_margin"
      android:paddingTop="@dimen/activity_vertical_margin">

      <EditText
         android:id="@+id/editTextName"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_marginTop="5dp"
         android:layout_marginLeft="82dp"
         android:ems="10"
         android:inputType="text" >
      </EditText>

      <EditText
         android:id="@+id/editTextEmail"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignLeft="@+id/editTextStreet"
         android:layout_below="@+id/editTextStreet"
         android:layout_marginTop="22dp"
         android:ems="10"
         android:inputType="textEmailAddress" />

      <TextView
         android:id="@+id/textView1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignBottom="@+id/editTextName"
         android:layout_alignParentLeft="true"
         android:text="@string/name"
         android:textAppearance="?android:attr/textAppearanceMedium" />

      <Button
         android:id="@+id/button1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignLeft="@+id/editTextCity"
         android:layout_alignParentBottom="true"
         android:layout_marginBottom="28dp"
         android:onClick="run"
         android:text="@string/save" />

      <TextView
         android:id="@+id/textView2"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignBottom="@+id/editTextEmail"
         android:layout_alignLeft="@+id/textView1"
         android:text="@string/email"
         android:textAppearance="?android:attr/textAppearanceMedium" />

      <TextView
         android:id="@+id/textView5"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignBottom="@+id/editTextPhone"
         android:layout_alignLeft="@+id/textView1"
         android:text="@string/phone"
         android:textAppearance="?android:attr/textAppearanceMedium" />

      <TextView
         android:id="@+id/textView4"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_above="@+id/editTextEmail"
         android:layout_alignLeft="@+id/textView5"
         android:text="@string/street"
         android:textAppearance="?android:attr/textAppearanceMedium" />

      <EditText
         android:id="@+id/editTextCity"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignRight="@+id/editTextName"
         android:layout_below="@+id/editTextEmail"
         android:layout_marginTop="30dp"
         android:ems="10"
         android:inputType="text" />

      <TextView
         android:id="@+id/textView3"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignBaseline="@+id/editTextCity"
         android:layout_alignBottom="@+id/editTextCity"
         android:layout_alignParentLeft="true"
         android:layout_toLeftOf="@+id/editTextEmail"
         android:text="@string/country"
         android:textAppearance="?android:attr/textAppearanceMedium" />

      <EditText
         android:id="@+id/editTextStreet"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignLeft="@+id/editTextName"
         android:layout_below="@+id/editTextPhone"
         android:ems="10"
         android:inputType="text" >

         <requestFocus />
      </EditText>

      <EditText
         android:id="@+id/editTextPhone"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignLeft="@+id/editTextStreet"
         android:layout_below="@+id/editTextName"
         android:ems="10"
         android:inputType="phone|text" />

   </RelativeLayout>
</ScrollView>

다음은의 내용입니다 res/value/string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">Address Book</string>
   <string name="action_settings">Settings</string>
   <string name="hello_world">Hello world!</string>
   <string name="Add_New">Add New</string>
   <string name="edit">Edit Contact</string>
   <string name="delete">Delete Contact</string>
   <string name="title_activity_display_contact">DisplayContact</string>
   <string name="name">Name</string>
   <string name="phone">Phone</string>
   <string name="email">Email</string>
   <string name="street">Street</string>
   <string name="country">City/State/Zip</string>
   <string name="save">Save Contact</string>
   <string name="deleteContact">Are you sure, you want to delete it.</string>
   <string name="yes">Yes</string>
   <string name="no">No</string>
</resources>

다음은의 내용입니다 res/menu/main_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
   
   <item android:id="@+id/item1" 
      android:icon="@drawable/add"
      android:title="@string/Add_New" >
   </item>
   
</menu>

다음은의 내용입니다 res/menu/display_contact.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
   <item
      android:id="@+id/Edit_Contact"
      android:orderInCategory="100"
      android:title="@string/edit"/>
   
   <item
      android:id="@+id/Delete_Contact"
      android:orderInCategory="100"
      android:title="@string/delete"/>

</menu>

이것은 기본입니다 AndroidManifest.xml 이 프로젝트의

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      
      </activity>
      
      <activity android:name=".DisplayContact"/>
      
   </application>
</manifest>

애플리케이션을 실행 해 보겠습니다. 실제 Android 모바일 장치를 컴퓨터에 연결했다고 가정합니다. Android 스튜디오에서 앱을 실행하려면 프로젝트의 활동 파일 중 하나를 열고

도구 모음에서 실행 아이콘을 클릭 합니다. 응용 프로그램을 시작하기 전에 Android 스튜디오는 Android 응용 프로그램을 실행할 옵션을 선택하는 다음 창을 표시합니다.

옵션으로 모바일 장치를 선택하고 다음 화면이 표시되는 모바일 장치를 확인하십시오-

이제 선택 메뉴를 열면 아래 이미지와 같이 표시됩니다. Optional menu appears different places on different versions

새 연락처를 추가하려면 메뉴 화면의 추가 버튼을 클릭합니다. 다음 화면이 표시됩니다-

다음 필드가 표시됩니다. 필요한 정보를 입력하고 연락처 저장을 클릭하십시오. 메인 화면으로 돌아갑니다.

이제 연락처 sai가 추가되었습니다. 데이터베이스가 생성 된 위치를 확인하기 위해. 안드로이드 스튜디오를 열고 모바일을 연결하세요. 가다tools/android/android device monitor. 이제 파일 탐색기 탭을 찾습니다. 이제이 폴더를 찾아보세요/data/data/<your.package.name>/databases<database-name>.