我在SQLite(Android)中获得了数据库对象未关闭异常,但我明确关闭了我的数据库…帮助?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了我在SQLite(Android)中获得了数据库对象未关闭异常,但我明确关闭了我的数据库…帮助?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2587字,纯文字阅读大概需要4分钟。
内容图文
![我在SQLite(Android)中获得了数据库对象未关闭异常,但我明确关闭了我的数据库…帮助?](/upload/InfoBanner/zyjiaocheng/889/26b0e084d16f44429d392d61bef4e734.jpg)
这是错误:
02-08 16:35:00.899:错误/数据库(468):android.database.sqlite.DatabaseObjectNotClosedException:应用程序未关闭此处打开的游标或数据库对象
除此之外,我是.以下是发生此问题的方法:
public static void getUpdates(String username, Context context) {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://10.0.2.2/tag/appgetfriendinfo.php");
try {
List<NameValuePair> nVPs = new ArrayList<NameValuePair>();
nVPs.add(new BasicNameValuePair("username", username));
httpPost.setEntity(new UrlEncodedFormEntity(nVPs));
HttpResponse response = httpClient.execute(httpPost);
ResponseHandler<String> rHandler = new BasicResponseHandler();
String result = rHandler.handleResponse(response);
JSONArray jArray = new JSONArray(result);
for(int i = 0; i < jArray.length(); i++) {
JSONObject jObj = jArray.getJSONObject(i);
String userCheck = jObj.getString("username");
TagDBAdapter dbHelper = new TagDBAdapter(context);
dbHelper.open();//OPENING THE DATABASE
Contact contact = new Contact();
String first = jObj.getString("firstname");
String last = jObj.getString("lastname");
String name = first + " " + last;
contact.setUsername(jObj.getString("username"));
contact.setFirstName(first);
contact.setLastName(last);
contact.setName(name);
contact.setPhoneNumber(jObj.getString("phonenumber"));
contact.setEmail(jObj.getString("email"));
contact.setHomePhone(jObj.getString("homephone"));
contact.setWorkPhone(jObj.getString("workphone"));
if(dbHelper.checkForExisting(userCheck) == true) {
dbHelper.createContact(contact);
}
else {
dbHelper.updateContactAuto(userCheck, contact);
}
dbHelper.close();//CLOSING THE DATABASE
}
} catch(ClientProtocolException e) {
Log.e("GETUPDATES", "CPE", e);
e.printStackTrace();
} catch(IOException e) {
Log.e("GETUPDATES", "IOE", e);
e.printStackTrace();
} catch(JSONException e) {
Log.e("GETUPDATES", "JSONE", e);
e.printStackTrace();
}
}
正如你在//注释中注意到的那样,我正在打开并关闭数据库,但我仍然收到错误.这是奇怪的,错误的来源是在SQLite的open()方法中.
错误/数据库(468):at com.tagapp.android.TagDBAdapter.open(TagDBAdapter.java:62)
这是:
/**THESE ARE MY DBADAPTER'S OPEN AND CLOSE METHODS*/
public TagDBAdapter open() throws SQLException {
mDBHelper = new DatabaseHelper(m_context);
mDb = mDBHelper.getWritableDatabase();
return this;
}
public void close() {
mDBHelper.close();
}
这些都是谷歌的记事本教程,他们在不同的情况下100%为我工作.有没有人知道这里发生了什么?非常感谢.
解决方法:
问题不是数据库对象,而是光标 – 你有一个打开的光标在某处.
在关闭数据库之前,请确保关闭所有游标. (顺便说一句,如果你想要花哨,你可以创建一个ContentProvider,使用SQLiteOpenHelper而不用担心关闭它.)
内容总结
以上是互联网集市为您收集整理的我在SQLite(Android)中获得了数据库对象未关闭异常,但我明确关闭了我的数据库…帮助?全部内容,希望文章能够帮你解决我在SQLite(Android)中获得了数据库对象未关闭异常,但我明确关闭了我的数据库…帮助?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。