Exception azzzzz......data exceeds UNCOMPRESS_DATA_MAX
Exception azzzzz......data exceeds UNCOMPRESS_DATA_MAX
Ciao,
io su un Galaxy Note copio dalla assets un db sqlite da circa 9mb senza problemi.
Questa la function per la copia:
e questa la funzione usata per il controllo esistenza file sul device:codice:public void copyDatabase() throws IOException { if (controlloEsistenzaDb()) { }else{ InputStream assetsDB = context.getAssets().open("androidsqlitedb.s3db"); OutputStream dbOut = new FileOutputStream(DB_PATH + "androidsqlitedb"); byte[] buffer = new byte[1024]; int length; while ((length = assetsDB.read(buffer))>0){ dbOut.write(buffer, 0, length); } dbOut.flush(); dbOut.close(); assetsDB.close(); } }
codice:public boolean controlloEsistenzaDb() { File dbFile = new File(DB_PATH + MYDATABASE_NAME); return dbFile.exists(); }
Ultima modifica di frank17next; 15-06-12 alle 13:48 - Motivo: spostamento quote in alto
Nexus 6 - 5.0.1 Stock
Nexus 5 - 5.0.1 Stock + Root
Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
------------------------------------------------------------------------
https://sites.google.com/site/frank17next/
Allora grazie per la risposta...son andato un po' avanti nei test anche se il risultato ancora non riesco ad ottenerlo. Faccio un veloce capitolato di quello che finora ho fatto:
-Sqlite versione 1.1 (vecchina) perchè ho dovuto convertire dati da un csv e la nuova versione non me lo consentiva.
-con Eclipse lavoro sull'emulatore in cui posso vedere il contenuto di DATA/DATA etc o della SDCARD...
-la copia del DB se supero il Mega non la fa sull'EMULATORE...vabbè ho ridotto i dati per fare i test
-avviene la copia su SDCARD (Emulatore) e vedo il file ma quando provo ad aprirlo con il plugin Sqlite data browser non gli piace. Penso che la versione del db influenzi cio'.
-adesso son bloccato su un exception "no such table "nome mia tabella""..
Grazie per qualsiasi info
Se usi il metodo getReadableDatabase (della classe SQLiteAdapter/Helper <- a proposito, posta il codice interessato) prima che avvenga la copia da assets, ottieni la creazione di un db vuoto (creato dal metodo) e il fallimento della copia per sovra scrittura di quel file db aperto
Inviato dal mio Nexus S tramite Tapatalk 2
Nexus 6 - 5.0.1 Stock
Nexus 5 - 5.0.1 Stock + Root
Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
------------------------------------------------------------------------
https://sites.google.com/site/frank17next/
Se hai l'errore 'No such table...' tabella non trovata, è presumibile che applichi una query su un db vuoto
Inviato dal mio Nexus S tramite Tapatalk 2
Nexus 6 - 5.0.1 Stock
Nexus 5 - 5.0.1 Stock + Root
Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
------------------------------------------------------------------------
https://sites.google.com/site/frank17next/
On click: (copiando pigramente tali e quali il tuo codice
miodb.openToRead();
String contenutoletto = miodb.queueAll();
miodb.close();
mioTextView1.setText(contenutoletto);
ON read:
public SQLiteAdapter openToRead() throws android.database.SQLException {
sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION);
try {
sqLiteHelper.copyDatabase();
} catch (IOException e) {
e.printStackTrace();
}
sqLiteDatabase = sqLiteHelper.getReadableDatabase();
return this;
}
Nexus 6 - 5.0.1 Stock
Nexus 5 - 5.0.1 Stock + Root
Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
------------------------------------------------------------------------
https://sites.google.com/site/frank17next/
Ho un errore quando cerco di allegare il codice.....non è che eccede la dimensione max del post?
package com.econorma.android;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFacto ry;
import android.os.Environment;
import android.util.Log;
public class SQLiteAdapter {
// public static String DB_PATH = "/data/data/com.econorma.android/databases/";
public static String DB_PATH = "/mnt/sdcard/";
// public static final String MYDATABASE_NAME = "ECONORMA.db";
public static final String MYDATABASE_NAME = "test.db";
public static final String MYDATABASE_TABLE = "ANAGRAFICA";
public static final int MYDATABASE_VERSION = 1;
public static final String KEY_CONTENT = "_id";
private SQLiteHelper sqLiteHelper;
private SQLiteDatabase sqLiteDatabase;
private Context context;
public SQLiteAdapter(Context c){
context = c;
}
public SQLiteAdapter openToRead() throws android.database.SQLException {
sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION);
try {
sqLiteHelper.copyDatabase();
} catch (IOException e) {
e.printStackTrace();
}
sqLiteDatabase = sqLiteHelper.getReadableDatabase();
return this;
}
public SQLiteAdapter openToWrite() throws android.database.SQLException {
sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION);
sqLiteDatabase = sqLiteHelper.getWritableDatabase();
return this;
}
public void close(){
sqLiteHelper.close();
}
public long insert(String content){
ContentValues contentValues = new ContentValues();
contentValues.put(KEY_CONTENT, content);
return sqLiteDatabase.insert(MYDATABASE_TABLE, null, contentValues);
}
public int deleteAll(){
return sqLiteDatabase.delete(MYDATABASE_TABLE, null, null);
}
public String queueAll(){
String[] columns = new String[]{KEY_CONTENT};
Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns,
null, null, null, null, null);
String result = "";
int index_CONTENT = cursor.getColumnIndex(KEY_CONTENT);
for(cursor.moveToFirst(); !(cursor.isAfterLast()); cursor.moveToNext()){
result = result + cursor.getString(index_CONTENT) + "\n";
}
return result;
}
public class SQLiteHelper extends SQLiteOpenHelper {
public SQLiteHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
//db.execSQL(SCRIPT_CREATE_DATABASE);
// try {
// if (checkDataBase()) {
// }
// else
// {
// copyDatabase();
// }
// } catch (IOException e) {
// e.printStackTrace();
// }
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void copyDatabase() throws IOException {
if (checkDataBase()) {
}else{
// sqLiteDatabase = sqLiteHelper.getReadableDatabase();
// sqLiteDatabase.close();
InputStream assetsDB = context.getAssets().open("test.db");
// OutputStream dbOut = new FileOutputStream("/data/data/com.econorma.android/databases/ECONORMA.db");
OutputStream dbOut = new FileOutputStream("/mnt/sdcard/test.db");
byte[] buffer = new byte[1024];
int length;
while ((length = assetsDB.read(buffer))>0){
dbOut.write(buffer, 0, length);
}
dbOut.flush();
dbOut.close();
assetsDB.close();
}
}
public boolean checkDataBase(){
SQLiteDatabase checkDB = null;
try{
String myPath = DB_PATH + MYDATABASE_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}catch(SQLiteException e){
//database does't exist yet.
}
if(checkDB != null){
checkDB.close();
}
return checkDB != null ? true : false;
}
}
}