SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Utwórz kopię zapasową/przywróć bazę danych SQLlite do folderu aplikacji Dysk Google

Zakładając, że masz ścieżkę do swojego MyDbFile.db pliku, możesz użyć konstrukcji takiej jak ta:

 ... 
 saveToDrive(
   Drive.DriveApi.getAppFolder(getGoogleApiClient()),
   "MyDbFile.db", 
   "application/x-sqlite3",
   new java.io.File("\...\...\...\MyDbFile.db")
 );
 ...

DriveId mDriveId;
/******************************************************************
 * create file in GOODrive
 * @param pFldr parent's ID
 * @param titl  file name
 * @param mime  file mime type  (application/x-sqlite3)
 * @param file  file (with content) to create
 */
void saveToDrive(final DriveFolder pFldr, final String titl,
                 final String mime, final java.io.File file) {
  if (getGoogleApiClient() != null && pFldr != null && titl != null && mime != null && file != null) try {
    // create content from file
    Drive.DriveApi.newDriveContents(getGoogleApiClient()).setResultCallback(new ResultCallback<DriveContentsResult>() {
      @Override
      public void onResult(DriveContentsResult driveContentsResult) {
        DriveContents cont = driveContentsResult != null && driveContentsResult.getStatus().isSuccess() ?
          driveContentsResult.getDriveContents() : null;

        // write file to content, chunk by chunk
        if (cont != null) try {
          OutputStream oos = cont.getOutputStream();
          if (oos != null) try {
            InputStream is = new FileInputStream(file);
            byte[] buf = new byte[4096];
            int c;
            while ((c = is.read(buf, 0, buf.length)) > 0) {
              oos.write(buf, 0, c);
              oos.flush();
            }
          }
          finally { oos.close();}

          // content's COOL, create metadata
          MetadataChangeSet meta = new Builder().setTitle(titl).setMimeType(mime).build();

          // now create file on GooDrive
          pFldr.createFile(getGoogleApiClient(), meta, cont).setResultCallback(new ResultCallback<DriveFileResult>() {
            @Override
            public void onResult(DriveFileResult driveFileResult) {
              if (driveFileResult != null && driveFileResult.getStatus().isSuccess()) {
                DriveFile dFil = driveFileResult != null && driveFileResult.getStatus().isSuccess() ?
                  driveFileResult.getDriveFile() : null;
                if (dFil != null) {
                  // BINGO , file uploaded
                  dFil.getMetadata(getGoogleApiClient()).setResultCallback(new ResultCallback<MetadataResult>() {
                    @Override
                    public void onResult(MetadataResult metadataResult) {
                      if (metadataResult != null && metadataResult.getStatus().isSuccess()) {
                        DriveId mDriveId = metadataResult.getMetadata().getDriveId();
                      }
                    }
                  });
                }
              } else { /* report error */     }
            }
          });
        } catch (Exception e) { e.printStackTrace(); }
      }
    });
  } catch (Exception e) { e.printStackTrace(); }
}

/*******************************************************************
 * get file contents
 */
void readFromGooDrive() {
  byte[] buf = null;
  if (getGoogleApiClient() != null && getGoogleApiClient().isConnected()) try {
    DriveFile df = Drive.DriveApi.getFile(getGoogleApiClient(), mDriveId);
    df.open(getGoogleApiClient(), DriveFile.MODE_READ_ONLY, null)
      .setResultCallback(new ResultCallback<DriveContentsResult>() {
      @Override
      public void onResult(DriveContentsResult driveContentsResult) {
        if ((driveContentsResult != null) && driveContentsResult.getStatus().isSuccess()) {
          DriveContents cont = driveContentsResult.getDriveContents();
          // DUMP cont.getInputStream() to your DB file
          cont.discard(getGoogleApiClient());    // or cont.commit();  they are equiv if READONLY
        }
      }
    });
  } catch (Exception e) { e.printStackTrace(); }
}

Powodzenia




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak stworzyć aplikację do internacjonalizacji offline:Zbuduj strukturę projektu

  2. Jak zamawiać według daty w SQLite

  3. 3 sposoby tworzenia kopii zapasowych bazy danych SQLite

  4. Dlaczego potrzebujemy klauzuli GLOB w SQLite?

  5. Nie można skopiować wstępnie utworzonej bazy danych z zasobów