Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中使用sqlite文件_Android_Database_Sqlite - Fatal编程技术网

如何在android中使用sqlite文件

如何在android中使用sqlite文件,android,database,sqlite,Android,Database,Sqlite,我陷入了一种情况,我不知道如何在android中使用sqlite文件 放在哪里?及 我们如何整合它 我知道我可以从data/data/PACKAGE/databases/文件夹中获取它,但当有新项目时,我找不到databases文件夹。在何处放置扩展名为.sqlite的文件。 任何答复都将不胜感激。 谢谢。这可能会对您有所帮助,我想: 如果你使用eclipse,你可以下载这个插件,只需复制粘贴一个.jar文件:) 通过就行了 这 您可以在DDMS中查看您的数据库 通常Sqlite数据存储在 /

我陷入了一种情况,我不知道如何在android中使用sqlite文件

  • 放在哪里?及
  • 我们如何整合它
  • 我知道我可以从
    data/data/PACKAGE/databases/
    文件夹中获取它,但当有新项目时,我找不到databases文件夹。在何处放置扩展名为
    .sqlite
    的文件。 任何答复都将不胜感激。
    谢谢。

    这可能会对您有所帮助,我想:

    如果你使用eclipse,你可以下载这个插件,只需复制粘贴一个.jar文件:) 通过就行了 这 您可以在DDMS中查看您的数据库

    通常Sqlite数据存储在

     //data/data/<Your-Application-Package-Name>/databases/<your-database-name>
    
    data/data/com.example.db/databases
    
    现在您可以在/sdcard的数据库文件夹中看到创建的数据库 如果您将您的数据库存储在内存中,则还可以将您的数据库从内存复制到SD卡:)

    当有新项目时,我找不到数据库文件夹

    原因是安全。若将数据库放在内部存储器中,使数据库仅在创建它的应用程序中可见,则更准确。您的.db文件存储在

     //data/data/<Your-Application-Package-Name>/databases/<your-database-name>
    
    data/data/com.example.db/databases
    
    因此,如果您想在另一个项目(具有不同的包)中打开它,则不会有您的文件

    我的档案放在哪里

    如果您想在多个应用程序之间实现并共享一个db,可以将文件保存到外部存储器中,但现在有一些关于敏感数据安全的问题

    但你还有另一个选择。您可以为多个应用程序共享一个db,但因此必须在manifest.xml中为每个应用程序指定sharedUserId

    android:sharedUserId="com.example"
    
    然后,若你们想从另一个应用程序连接到db,你们需要使用托管应用程序的包

    Context cntxt = this.createPackageContext("hosting.app.package.name", 
                    Context.CONTEXT_INCLUDE_CODE);
    

    您需要将sqlite文件放在项目的assets文件夹中,并将该文件复制到SD卡上所需的位置。希望这对你有帮助

    public DataBaseHelper(Context context) 
        {
            super(context, DB_NAME, null, 300500);// 1? its Database Version
            DB_PATH = "/data/data/" + context.getPackageName() + "/databases/";
            this.mContext = context;
        }   
    
        public void createDataBase() throws IOException
        {
            //If database not exists copy it from the assets
    
            boolean mDataBaseExist = checkDataBase();
            if(!mDataBaseExist)
            {
                this.getReadableDatabase();
                this.close();
                try 
                {
                    //Copy the database from assests
                    copyDataBase();
                    Log.w(TAG, "createDatabase database created");
                } 
                catch (IOException mIOException) 
                {
                    throw new Error("ErrorCopyingDataBase");
                }
            }
        }
            //Check that the database exists here: /data/data/your package/databases/Da Name
            private boolean checkDataBase()
            {
                File dbFile = new File(DB_PATH + DB_NAME);
                //Log.v("dbFile", dbFile + "   "+ dbFile.exists());
                return dbFile.exists();
            }
    
            //Copy the database from assets
            private void copyDataBase() throws IOException
            {
                InputStream mInput = mContext.getAssets().open(DB_NAME);
                String outFileName = DB_PATH + DB_NAME;
                OutputStream mOutput = new FileOutputStream(outFileName);
                byte[] mBuffer = new byte[1024];
                int mLength;
                while ((mLength = mInput.read(mBuffer))>0)
                {
                    mOutput.write(mBuffer, 0, mLength);
                }
                mOutput.flush();
                mOutput.close();
                mInput.close();
            }
    
            //Open the database, so we can query it
            public boolean openDataBase() throws SQLException
            {
                String mPath = DB_PATH + DB_NAME;
                //Log.v("mPath", mPath);
                myDataBase = SQLiteDatabase.openDatabase(mPath, null, SQLiteDatabase.CREATE_IF_NECESSARY);
                //mDataBase = SQLiteDatabase.openDatabase(mPath, null, SQLiteDatabase.NO_LOCALIZED_COLLATORS);
                return myDataBase != null;
            }
    
            @Override
            public synchronized void close() 
            {
                if(myDataBase != null)
                    myDataBase.close();
                super.close();
            }
    
    
    
            // Add your public helper methods to access and get content from the database.
           // You could return cursors by doing "return myDataBase.query(....)" so it'd be easy
           // to you to create adapters for your views.
    

    重置adb,然后查看本教程:感谢Arlem给出您的答案。我看过这类教程,但我不明白我使用Firefox插件中的SQLItemManager创建了一个数据库,我应该在我的项目中保存该数据库文件,以便android可以检测到这是数据库文件,另一件事是我不确定android是否允许扩展名为.sqlite的文件。先生,我正在使用sqlite管理器插件,我有扩展名为.sqlite的数据库文件,但我不知道在我的项目中可以在哪里使用该文件。还想知道android是支持file.sqlite还是需要.db