简体   繁体   中英

where can i find database and table records in android studio?

code for manifest which has two activity inside app.
AnroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.nexus.movierate">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".DirectoryName"></activity>

    </application>

</manifest>

mainactivity contain layout and on button click event it will intent to MovieRatingDataHelper.java and also contaion code for insert data inside insert () method.

MainActivity.java

    package com.example.nexus.movierate;

    import android.content.ContentValues;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.provider.ContactsContract;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.app.Activity;
    import android.util.Log;
    import android.widget.Toast;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.RatingBar;
    import android.content.Intent;
    import android.widget.Spinner;
    import android.widget.ArrayAdapter;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;


    public class MainActivity extends AppCompatActivity implements 
    RatingBar.OnRatingBarChangeListener {

    private EditText moviename;
    private EditText userReview;
    private EditText releaseYear;
    private EditText movieDuration;
    private RatingBar yourRating;
    private EditText movieStarring;
    private EditText movieDirector;
    private Button mSaveButton;
    private Spinner mGeners;


    String name;
    String year;
    String duration;
    String review;
    String director;
    String starcast;
    double rating;
    String genre;

    SQLiteOpenHelper openHelper;
    SQLiteDatabase db;
    private ArrayAdapter <String> mAdapter;
    MovieRatingDataHelper mDataHelper;


    /*Array containing the genres to which a movie can belong*/
    private String[] mGenresData = {
            "-Select Genre-",
            "Action", "Adventure", "Animation", "Biography", "Comedy", "Crime", "Documentry", "Drama", "Family", "Fantasy", "FilmNoir",
            "Game-Show", "History", "Horror", "Music", "Musical", "Mystery", "News", "RealityTV", "Romance", "Scifi", "Sport", "TalkShow",
            "Thriller", "War", "Western"};



    @Override
    protected void onCreate( Bundle savedInstanceState ) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_main );

        /* Initialized variable  */
        moviename = (EditText) findViewById( R.id.editText2 );
        userReview = (EditText) findViewById( R.id.editText1 );
        releaseYear = (EditText) findViewById( R.id.editText3 );
        movieDuration = (EditText) findViewById( R.id.editText4 );
        yourRating = (RatingBar) findViewById( R.id.ratingBar1 );
        movieStarring = (EditText) findViewById( R.id.editText5 );
        movieDirector = (EditText) findViewById( R.id.editText6 );
        mSaveButton = (Button) findViewById( R.id.button1 );


        yourRating.setOnRatingBarChangeListener( this );
        mGeners = (Spinner) findViewById( R.id.spinner1 );
       // mDataHelper = new MovieRatingDataHelper(this);

        mAdapter = new ArrayAdapter <String>( this, android.R.layout.simple_spinner_item, mGenresData );
        mAdapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
        mGeners.setAdapter( mAdapter );
        movieDirector.setOnClickListener( new OnClickListener() {
            @Override
            public void onClick( View arg0 ) {
                //TODO Auto - generated method stub
                Intent mAutoCompleteIntent = new Intent( MainActivity.this, DirectoryName.class );
                startActivityForResult( mAutoCompleteIntent, 0123456 );
            }
        } );

        mSaveButton.setOnClickListener( new OnClickListener() {
            @Override
            public void onClick( View arg0 ) {

                db=openHelper.getWritableDatabase();
                 name = moviename.getText().toString();
                 year = releaseYear.getText().toString();
                 duration = movieDuration.getText().toString();
                 review = userReview.getText().toString();
                 director = movieDirector.getText().toString();
                 starcast = movieStarring.getText().toString();
                 rating = yourRating.getRating();
                 genre = mGeners.getSelectedItem().toString();

                if (mGeners.getSelectedItem().toString().equalsIgnoreCase( "-Select Genre-" )) {
                    Toast.makeText( MainActivity.this, "Please Select valid Genre", Toast.LENGTH_SHORT ).show();
                    return;
                }

                /*Check if any of the values is blank.Display a message accordingly */
                if (year.equalsIgnoreCase( "" ) && duration.equalsIgnoreCase( "" )
                        && starcast.equalsIgnoreCase( "" ) || name.equalsIgnoreCase( "" )
                        || director.equalsIgnoreCase( "" ) || review.equalsIgnoreCase( "" )) {
                    Toast.makeText( MainActivity.this, "Please fill all the fields.", Toast.LENGTH_SHORT ).show();
                } else {


                    Toast.makeText( MainActivity.this, "Validation successful", Toast.LENGTH_SHORT ).show();


                    Toast.makeText( MainActivity.this, "MOVIE NAME IS   " + rating, Toast.LENGTH_LONG ).show();

                    insert(name,genre,year,duration,rating,review,starcast,director);
                    Intent mReviewListIntent = new Intent( MainActivity.this, ReviewListActivity.class );
                    startActivity(mReviewListIntent);
                }
            }
        } );
    }

    private void insert( String name, String genre, String year, String duration, double rating, String review, String starcast, String director ) {

            try
            {
                ContentValues cv = new ContentValues();
                cv.put(MovieRatingDataHelper.V_moviename,name);
                cv.put(MovieRatingDataHelper.V_genre,genre);
                cv.put(MovieRatingDataHelper.V_year,year);
                cv.put(MovieRatingDataHelper.V_duration,duration);
                cv.put(MovieRatingDataHelper.V_rate,rating);
                cv.put(MovieRatingDataHelper.V_review,review);
                cv.put(MovieRatingDataHelper.V_starring,starcast);
                cv.put(MovieRatingDataHelper.V_director,director);

                db.insertOrThrow(MovieRatingDataHelper.Table_Name, null,cv);

                // sqlDB.execSQL("INSERT INTO movie_rate(moviename,genre,year,duration,rate,review,starring,director) values (name,genre,year,duration,4,review,starcast,director)");
                Toast.makeText(MainActivity.this,"Data Successfully Inserted", Toast.LENGTH_SHORT).show();

            }
            catch (Exception ex)
            {
                Log.e("Issue" , ex.toString());
            }



        }

    /*protected void onActivityResult(int requestCode, int resultCode, Intent data)
        {
            super.onActivityResult(requestCode, resultCode, data);

            try
            {
                if((requestCode == 0123456) && (resultCode == Activity.RESULT_OK))
                {
                    Bundle myResults = data.getExtras();
                    String vresult = myResults.getString("key");
                    movieDirector.setText(vresult);
                }
            }

            catch(Exception e)
            {
                movieDirector.setText("Oops! - " + requestCode + "" + resultCode);
            }
        }
       */
              @Override
              public void onRatingChanged( RatingBar ratingBar, float arg1, boolean fromUser ) {
                       yourRating.setRating( arg1 );
                   }
       } 

MovieRatingDataHelper.java

     package com.example.nexus.movierate;

     import android.content.ContentValues;
     import android.content.Context;
     import android.database.sqlite.SQLiteDatabase;
     import android.database.sqlite.SQLiteOpenHelper;
     import android.util.Log;
     import android.widget.Toast;


      class MovieRatingDataHelper extends SQLiteOpenHelper
       {
         public static final String DataBase_Name = "MyDB.db";
         public static final String Table_Name = "movie_rate";
         public static final String V_moviename = "moviename";
         public static final String V_genre = "genre";
         public static final String V_year = "year";
         public static final String V_duration = "duration";
         public static final String V_rate = "rate";
         public static final String V_review = "review";
         public static final String V_starring = "starring";
         public static final String V_director = "director";
         public static final int DataBase_Version = 1;

         public MovieRatingDataHelper( Context context )
         {
             super( context, DataBase_Name, null, DataBase_Version );
         }

         @Override
         public void onCreate( SQLiteDatabase db )
         {
             db.execSQL("Create Table "+Table_Name+"(moviename TEXT,genre TEXT,year INT,duration INT,rate INT,review TEXT,starring TEXT,director TEXT)");
         }

         @Override
         public void onUpgrade( SQLiteDatabase db, int oldVersion, int newVersion )
         {
             db.execSQL(" DROP TABLE IF EXISTS "+Table_Name);
             onCreate(db);
         }
     }

I have implemented movieRate app in which moviename,rating, director name,starring etc data is being inserted. im using android studio and not able to find database and table inside android studio ADM , infect i do not have tools/android/ADM option in android studio. where can I find that option and also can not able to insert data properly ...

I found this error when I run the app and app gets stopped.

java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.database.sqlite.SQLiteOpenHelper.getWritableDatabase()' on a null object reference

Whether you are using mobile device or working on emulator, database files are stored in path “ /data/data/[your_package_name]/databases ”. Whenever you dynamically create a database it actually creates two files one is database file and second is - journal file.

In Android Studio you can find your device. On right hand side at bottom. You will see Device File Explorer

See image below

在此输入图像描述

under data/data/ folder find your package and database folder. You can save that database in your local system.

You will also need a SQLite Browser to read your database.

SQLite Browser Download link.

If you have some problems in device explorer window like me (It usually happens in Samsung phones) I would suggest you to use Debug-Db library. link : https://github.com/amitshekhariitbhu/Android-Debug-Database

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM