{"id":3694,"date":"2015-11-26T10:45:17","date_gmt":"2015-11-26T10:45:17","guid":{"rendered":"http:\/\/www.fandroid.info\/?page_id=3694"},"modified":"2019-02-13T10:03:25","modified_gmt":"2019-02-13T08:03:25","slug":"kak-podklyuchit-bazu-dannyh-sqlite-v-android-prilozhenie","status":"publish","type":"page","link":"https:\/\/www.fandroid.info\/kak-podklyuchit-bazu-dannyh-sqlite-v-android-prilozhenie\/","title":{"rendered":"\u041a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 SQLite \u0432 Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435[:en]How to connect a SQLite database to an Android application"},"content":{"rendered":"
\u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u043a\u043e\u0432\u00a0\u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c\u00a0\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 SQLite \u0432 android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445, \u043d\u043e\u00a0\u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u0443\u044e\u00a0\u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u043a\u0430\u043a\u00a0\u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435\u00a0\u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 SQLite \u0432 android\u00a0\u043f\u0440\u043e\u0435\u043a\u0442?<\/p>\n
\u0412 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u0432\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043c\u043d\u043e\u0433\u043e \u043b\u044e\u0434\u0435\u0439 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043c\u0435\u0442\u043e\u0434\u044b CRUD, \u043e\u043d\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0442\u044f\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e SQLite \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 .<\/p>\n
\u0412 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u0432\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 SQLite \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0SQLite Software Manager, \u0438\u00a0\u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0411\u0414 \u0432 \u0430\u043d\u0434\u0440\u043e\u0438\u0434-\u043f\u0440\u043e\u0435\u043a\u0442,\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u00a0Android SQLite API.<\/p>\n
https:\/\/youtu.be\/iE_bsPfB00w<\/p>\n
\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n
<LinearLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\n xmlns:tools=\"http:\/\/schemas.android.com\/tools\"\n android:layout_width=\"match_parent\"\n android:layout_height=\"match_parent\"\n android:orientation=\"vertical\"\n android:paddingBottom=\"@dimen\/activity_vertical_margin\"\n android:paddingLeft=\"@dimen\/activity_horizontal_margin\"\n android:paddingRight=\"@dimen\/activity_horizontal_margin\"\n android:paddingTop=\"@dimen\/activity_vertical_margin\"\n tools:context=\".CopyDbActivity\">\n\n <Button\n android:id=\"@+id\/button01\"\n android:layout_width=\"wrap_content\"\n android:layout_height=\"wrap_content\"\n android:text=\"Copy Database\"><\/Button>\n\n\n<\/LinearLayout>\n<\/pre>\nimport android.database.Cursor;\nimport android.database.SQLException;\nimport android.support.v7.app.AppCompatActivity;\nimport android.os.Bundle;\nimport android.view.Menu;\nimport android.view.MenuItem;\nimport android.view.View;\nimport android.widget.Button;\nimport android.widget.Toast;\n\nimport java.io.IOException;\n\npublic class CopyDbActivity extends AppCompatActivity {\n\n Cursor c = null;\n\n @Override\n protected void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n setContentView(R.layout.activity_copy_db);\n\n ((Button) findViewById(R.id.button01)).setOnClickListener(new View.OnClickListener() {\n @Override\n public void onClick(View v) {\n DatabaseHelper myDbHelper = new DatabaseHelper(CopyDbActivity.this);\n try {\n myDbHelper.createDataBase();\n } catch (IOException ioe) {\n throw new Error(\"Unable to create database\");\n }\n try {\n myDbHelper.openDataBase();\n } catch (SQLException sqle) {\n throw sqle;\n }\n Toast.makeText(CopyDbActivity.this, \"Success\", Toast.LENGTH_SHORT).show();\n c = myDbHelper.query(\"EMP_TABLE\", null, null, null, null, null, null);\n if (c.moveToFirst()) {\n do {\n Toast.makeText(CopyDbActivity.this,\n \"_id: \" + c.getString(0) + \"\\n\" +\n \"E_NAME: \" + c.getString(1) + \"\\n\" +\n \"E_AGE: \" + c.getString(2) + \"\\n\" +\n \"E_DEPT: \" + c.getString(3),\n Toast.LENGTH_LONG).show();\n } while (c.moveToNext());\n }\n }\n });\n\n }\n\n\n}<\/pre>\nimport android.content.Context;\nimport android.database.Cursor;\nimport android.database.SQLException;\nimport android.database.sqlite.SQLiteDatabase;\nimport android.database.sqlite.SQLiteException;\nimport android.database.sqlite.SQLiteOpenHelper;\nimport android.util.Log;\n\nimport java.io.FileOutputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\n\n\/**\n * Created by Aylar-HP on 12\/10\/2015.\n *\/\npublic class DatabaseHelper extends SQLiteOpenHelper {\n\n String DB_PATH = null;\n private static String DB_NAME = \"extenalDB\";\n private SQLiteDatabase myDataBase;\n private final Context myContext;\n\n public DatabaseHelper(Context context) {\n super(context, DB_NAME, null, 10);\n this.myContext = context;\n this.DB_PATH = \"\/data\/data\/\" + context.getPackageName() + \"\/\" + \"databases\/\";\n Log.e(\"Path 1\", DB_PATH);\n }\n\n\n public void createDataBase() throws IOException {\n boolean dbExist = checkDataBase();\n if (dbExist) {\n } else {\n this.getReadableDatabase();\n try {\n copyDataBase();\n } catch (IOException e) {\n throw new Error(\"Error copying database\");\n }\n }\n }\n\n private boolean checkDataBase() {\n SQLiteDatabase checkDB = null;\n try {\n String myPath = DB_PATH + DB_NAME;\n checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);\n } catch (SQLiteException e) {\n }\n if (checkDB != null) {\n checkDB.close();\n }\n return checkDB != null ? true : false;\n }\n\n private void copyDataBase() throws IOException {\n InputStream myInput = myContext.getAssets().open(DB_NAME);\n String outFileName = DB_PATH + DB_NAME;\n OutputStream myOutput = new FileOutputStream(outFileName);\n byte[] buffer = new byte[10];\n int length;\n while ((length = myInput.read(buffer)) > 0) {\n myOutput.write(buffer, 0, length);\n }\n myOutput.flush();\n myOutput.close();\n myInput.close();\n\n }\n\n public void openDataBase() throws SQLException {\n String myPath = DB_PATH + DB_NAME;\n myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);\n\n }\n\n @Override\n public synchronized void close() {\n if (myDataBase != null)\n myDataBase.close();\n super.close();\n }\n\n\n @Override\n public void onCreate(SQLiteDatabase db) {\n }\n\n @Override\n public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {\n if (newVersion > oldVersion)\n try {\n copyDataBase();\n } catch (IOException e) {\n e.printStackTrace();\n\n }\n }\n\n public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) {\n return myDataBase.query(\"EMP_TABLE\", null, null, null, null, null, null);\n }\n\n\n}\n<\/pre>\n