我的android数据库应用程序在android 2.x中不工作
我有一个应用程序在android 4.x中运行平稳,但在android 2.x中运行不平稳。我的android数据库应用程序在android 2.x中不工作,android,sqlite,Android,Sqlite,我有一个应用程序在android 4.x中运行平稳,但在android 2.x中运行不平稳。 我试图做的是从web服务中获取一些信息并存储在数据库中。 我该怎么办? 这是产生错误的代码: public String CallMethod(String methodName,ArrayList<ServiceParam> paramList) { String result = "default"; SoapObject request = new So
我试图做的是从web服务中获取一些信息并存储在数据库中。 我该怎么办? 这是产生错误的代码:
public String CallMethod(String methodName,ArrayList<ServiceParam> paramList) {
String result = "default";
SoapObject request = new SoapObject(namespace, methodName);
PropertyInfo pi = new PropertyInfo();
for(int i=0;i<paramList.size();i++){
ServiceParam serviceParam;
serviceParam = paramList.get(i);
pi = new PropertyInfo();
pi.setName(serviceParam.name);
pi.setValue(serviceParam.value);
pi.setType(serviceParam.type);
request.addProperty(pi);
}
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(url);
try {
androidHttpTransport.call(namespace+methodName, envelope);
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
result= response.toString();
output = result;
} catch (Exception e) {
Log.d("Ehsan", e.getMessage());
Log.d("Ehsan", e.getLocalizedMessage());
e.printStackTrace();
}
return result;
}
这是我的日志猫:
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): Releasing statement in a finalizer. Please ensure that you explicitly call close() on your cursor: SELECT * FROM settings WHERE name='PersonId'
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:62)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:46)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1315)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at ClassLibrary.DbHelper.select(DbHelper.java:105)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at com.example.shareholders.entities.Settings.select(Settings.java:93)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at com.example.shareholders.entities.Settings.getValue(Settings.java:56)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at com.example.shareholders.Login.onCreate(Login.java:24)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.os.Handler.dispatchMessage(Handler.java:99)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.os.Looper.loop(Looper.java:123)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at java.lang.reflect.Method.invokeNative(Native Method)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at java.lang.reflect.Method.invoke(Method.java:521)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at dalvik.system.NativeStart.main(Native Method)
11-26 11:26:02.736: E/Database(12820): close() was never explicitly called on database '/data/data/com.example.shareholders/databases/shareholders.db'
11-26 11:26:02.736: E/Database(12820): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
11-26 11:26:02.736: E/Database(12820): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1810)
11-26 11:26:02.736: E/Database(12820): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
11-26 11:26:02.736: E/Database(12820): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
11-26 11:26:02.736: E/Database(12820): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)
11-26 11:26:02.736: E/Database(12820): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:540)
11-26 11:26:02.736: E/Database(12820): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
11-26 11:26:02.736: E/Database(12820): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
11-26 11:26:02.736: E/Database(12820): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:158)
11-26 11:26:02.736: E/Database(12820): at ClassLibrary.DbHelper.select(DbHelper.java:99)
11-26 11:26:02.736: E/Database(12820): at com.example.shareholders.entities.Settings.select(Settings.java:93)
11-26 11:26:02.736: E/Database(12820): at com.example.shareholders.entities.Settings.getValue(Settings.java:56)
11-26 11:26:02.736: E/Database(12820): at com.example.shareholders.Login.onCreate(Login.java:24)
11-26 11:26:02.736: E/Database(12820): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-26 11:26:02.736: E/Database(12820): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-26 11:26:02.736: E/Database(12820): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-26 11:26:02.736: E/Database(12820): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-26 11:26:02.736: E/Database(12820): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-26 11:26:02.736: E/Database(12820): at android.os.Handler.dispatchMessage(Handler.java:99)
11-26 11:26:02.736: E/Database(12820): at android.os.Looper.loop(Looper.java:123)
11-26 11:26:02.736: E/Database(12820): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-26 11:26:02.736: E/Database(12820): at java.lang.reflect.Method.invokeNative(Native Method)
11-26 11:26:02.736: E/Database(12820): at java.lang.reflect.Method.invoke(Method.java:521)
11-26 11:26:02.736: E/Database(12820): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-26 11:26:02.736: E/Database(12820): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-26 11:26:02.736: E/Database(12820): at dalvik.system.NativeStart.main(Native Method)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):在终结器中释放语句。请确保在光标上显式调用close():从name='PersonId'所在的设置中选择*
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):android.database.sqlite.DatabaseObjectNotClosedException:应用程序未关闭在此处打开的游标或数据库对象
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于android.database.sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java:62)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:80)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:46)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1315)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于ClassLibrary.DbHelper.select(DbHelper.java:105)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于com.example.股东.entities.Settings.select(Settings.java:93)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于com.example.股东.entities.Settings.getValue(Settings.java:56)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于com.example.genders.Login.onCreate(Login.java:24)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于android.os.Handler.dispatchMessage(Handler.java:99)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于android.os.Looper.loop(Looper.java:123)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于android.app.ActivityThread.main(ActivityThread.java:4627)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于java.lang.reflect.Method.invokenactive(本机方法)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于java.lang.reflect.Method.invoke(Method.java:521)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-26 11:26:02.666:W/SQLiteCompiledSql(12820):位于dalvik.system.NativeStart.main(本机方法)
11-26 11:26:02.736:E/Database(12820):从未对数据库“/data/data/com.example.genders/databases/genders.db”显式调用close()
11-26 11:26:02.736:E/Database(12820):android.Database.sqlite.DatabaseObjectNotClosedException:应用程序未关闭在此打开的游标或数据库对象
11-26 11:26:02.736:E/Database(12820):位于android.Database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1810)
11-26 11:26:02.736:E/Database(12820):位于android.Database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
11-26 11:26:02.736:E/Database(12820):位于android.Database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
11-26 11:26:02.736:E/Database(12820):位于android.Database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)
11-26 11:26:02.736:E/Database(12820):位于android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:540)
11-26 11:26:02.736:E/Database(12820):位于android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
11-26 11:26:02.736:E/Database(12820):位于android.Database.sqlite.SQLiteOpenHelper.getwriteabledatabase(SQLiteOpenHelper.java:98)
11-26 11:26:02.736:E/Database(12820):位于android.Database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:158)
11-26 11:26:02.736:E/Database(12820):在ClassLibrary.DbHelper.select(DbHelper.java:99)
11-26 11:26:02.736:E/Database(12820):在com.example.genders.entities.Settings.select(Settings.java:93)
11-26 11:26:02.736:E/Database(12820):在com.example.genders.entities.Settings.getValue(Settings.java:56)
11-26 11:26:02.736:E/Database(12820):在com.example.genders.Login.onCreate(Login.java:24)
11-26 11:26:02.736:E/数据库(12820):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-26 11:26:02.736:E/数据库(12820):位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-26 11:26:02.736:E/Database(12820):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-26 11:26:02.736:E/数据库(12820):位于android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-26 11:26:02.736:E/数据库(12820):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-26 11:26:02.736:E/Database(12820):在android.os.Handler.dispatchMessage(Handler.java:99)上
11-26 11:26:02.736:E/Database(12820):在android.os.Looper.loop(Looper.java:123)
11-26 11:26:02.736:E/数据库(12820):位于android.app.ActivityThread.main(ActivityThr)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): Releasing statement in a finalizer. Please ensure that you explicitly call close() on your cursor: SELECT * FROM settings WHERE name='PersonId'
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:62)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:46)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1315)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at ClassLibrary.DbHelper.select(DbHelper.java:105)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at com.example.shareholders.entities.Settings.select(Settings.java:93)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at com.example.shareholders.entities.Settings.getValue(Settings.java:56)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at com.example.shareholders.Login.onCreate(Login.java:24)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.os.Handler.dispatchMessage(Handler.java:99)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.os.Looper.loop(Looper.java:123)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at java.lang.reflect.Method.invokeNative(Native Method)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at java.lang.reflect.Method.invoke(Method.java:521)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-26 11:26:02.666: W/SQLiteCompiledSql(12820): at dalvik.system.NativeStart.main(Native Method)
11-26 11:26:02.736: E/Database(12820): close() was never explicitly called on database '/data/data/com.example.shareholders/databases/shareholders.db'
11-26 11:26:02.736: E/Database(12820): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
11-26 11:26:02.736: E/Database(12820): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1810)
11-26 11:26:02.736: E/Database(12820): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
11-26 11:26:02.736: E/Database(12820): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
11-26 11:26:02.736: E/Database(12820): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)
11-26 11:26:02.736: E/Database(12820): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:540)
11-26 11:26:02.736: E/Database(12820): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
11-26 11:26:02.736: E/Database(12820): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
11-26 11:26:02.736: E/Database(12820): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:158)
11-26 11:26:02.736: E/Database(12820): at ClassLibrary.DbHelper.select(DbHelper.java:99)
11-26 11:26:02.736: E/Database(12820): at com.example.shareholders.entities.Settings.select(Settings.java:93)
11-26 11:26:02.736: E/Database(12820): at com.example.shareholders.entities.Settings.getValue(Settings.java:56)
11-26 11:26:02.736: E/Database(12820): at com.example.shareholders.Login.onCreate(Login.java:24)
11-26 11:26:02.736: E/Database(12820): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-26 11:26:02.736: E/Database(12820): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-26 11:26:02.736: E/Database(12820): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-26 11:26:02.736: E/Database(12820): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-26 11:26:02.736: E/Database(12820): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-26 11:26:02.736: E/Database(12820): at android.os.Handler.dispatchMessage(Handler.java:99)
11-26 11:26:02.736: E/Database(12820): at android.os.Looper.loop(Looper.java:123)
11-26 11:26:02.736: E/Database(12820): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-26 11:26:02.736: E/Database(12820): at java.lang.reflect.Method.invokeNative(Native Method)
11-26 11:26:02.736: E/Database(12820): at java.lang.reflect.Method.invoke(Method.java:521)
11-26 11:26:02.736: E/Database(12820): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-26 11:26:02.736: E/Database(12820): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-26 11:26:02.736: E/Database(12820): at dalvik.system.NativeStart.main(Native Method)
public int update(String name, String value) {
DbHelper db = new DbHelper(context);
try {
db.openDataBase();
ContentValues cv = new ContentValues();
cv.put("value", value);
db.update("settings", cv, "name='" + name + "'");
} catch (Exception e) {
xLog.error(e.getMessage());
} finally {
db.closeDataBase();
}
return 0;
}
private void openDataBase() throws SQLException {
database = databaseHelper.getWritableDatabase();
}
private void closeDataBase() {
if (databaseHelper != null) {
databaseHelper.close();
}
}