हमारे पास हमारे एप्लिकेशन में एक स्क्लाइट डेटाबेस है। यह सभी उपयोगकर्ताओं के लिए ठीक काम कर रहा है लेकिन उनमें से कुछ Caused by: android.database.sqlite.SQLiteException: no such table: generalSettings (code 1): , while compiling: select * from generalSettings
त्रुटि का अनुभव कर रहे हैं।के कारण: android.database.sqlite.SQLiteException: ऐसी कोई तालिका नहीं: (कोड 1) एंड्रॉइड
नीचे मेरी एसक्लाइट सहायक वर्ग डीबी और त्रुटि लॉग बनाने के लिए है। assert/Master.db
में हमारे पास तालिका generalSettings
है। लेकिन डिवाइस पर इसे कॉपी करने के बाद तालिका गुम है। यह केवल कुछ उपयोगकर्ताओं के लिए हो रहा है। मैंने समाधान की खोज की लेकिन मुझे सटीक नहीं मिला। टीम कृपया इसे ठीक करने में मेरी मदद करें।
कोड:
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.net.Uri;
import android.util.Log;
public class InstallDB extends SQLiteOpenHelper {
Context ctx;
String DBNAME;
String DBPATH;
Modules modObj = new Modules();
public InstallDB(Context context, String name) {
super(context, name, null, 1);
this.ctx = context;
this.DBNAME = name;
this.DBPATH = this.ctx.getDatabasePath(DBNAME).getAbsolutePath();
Log.e("Path 1", DBPATH);
}
public void createDataBase() {
boolean dbExist = checkDataBase();
SQLiteDatabase db_Read = null;
if (!dbExist) {
synchronized (this) {
db_Read = this.getReadableDatabase();
Log.e("Path 2", this.getReadableDatabase().getPath());
db_Read.close();
copyDataBase();
Log.v("copyDataBase---", "Successfully");
}
// try {
// } catch (IOException e) {
// throw new Error("Error copying database");
// }
}
}
private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
try {
String myPath = DBPATH;
checkDB = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READWRITE);
} catch (Exception e) {
Log.i("SQLite Error", "database does't exist yet.");
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
private void copyDataBase() {
try {
InputStream myInput = ctx.getAssets().open(DBNAME);
String outFileName = DBPATH;
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024 * 3];
int length = 0;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
} catch (Exception e) {
Modules.stacTaceElement = e.getStackTrace();
StringWriter stackTrace1 = new StringWriter();
e.printStackTrace(new PrintWriter(stackTrace1));
System.err.println(stackTrace1);
Intent send = new Intent(Intent.ACTION_SENDTO);
String uriText;
uriText = "mailto:[email protected]"
+ "&subject=Error Report"
+ "&body="
+ stackTrace1.toString();
uriText = uriText.replace(" ", "%20");
Uri uri = Uri.parse(uriText);
send.setData(uri);
ctx.startActivity(Intent.createChooser(send, "Send mail..."));
// TODO: handle exception
}
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
त्रुटि लॉग:
java.lang.RuntimeException: Unable to start activity ComponentInfo{palmagent.FidelityAgent.Two/palmagent.FidelityAgent.Two.PassNew}: android.database.sqlite.SQLiteException: no such table: generalSettings (code 1): , while compiling: select * from generalSettings
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269)
at android.app.ActivityThread.access$800(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5102)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.database.sqlite.SQLiteException: no such table: generalSettings (code 1): , while compiling: select * from generalSettings
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253)
at palmagent.FidelityAgent.Two.masterDatabase.selectquery(masterDatabase.java:59)
at palmagent.FidelityAgent.Two.Modules.checkDatabase(Modules.java:28825)
at palmagent.FidelityAgent.Two.PassNew$LoaduserDetails.onPreExecute(PassNew.java:140)
at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
at android.os.AsyncTask.execute(AsyncTask.java:535)
at palmagent.FidelityAgent.Two.PassNew.onCreate(PassNew.java:120)
at android.app.Activity.performCreate(Activity.java:5248)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2173)
... 11 more
क्या आप अपने डेटाबेस की एक तैनात प्रतिलिपि लिख रहे हैं जिस पर एंड्रॉइड बनाया जाएगा? मुझे लगता है कि यह एक बुरा विचार है क्योंकि एंड्रॉइड डेटाबेस में कुछ निजी डेटा रखता है। – brummfondel
@brummfondel - हमारे पास डीबी में 10 टेबल और कुछ स्थिर डेटा हैं। तो डीबी बनाने में काफी समय लगेगा। तो हमने एंड्रॉइड में डेटाबेस की प्रतिलिपि बनाई। कृपया मुझे ऐसा करने का सबसे अच्छा तरीका बताएं। – Sniper
कुछ उपकरणों और अनुकरणकर्ताओं पर मेरे ऐप का परीक्षण करने के बाद मुझे एक ही समस्या का सामना करना पड़ रहा है http://stackoverflow.com/questions/24406326/no-such-table-in-api-2-2 –