Android SQLite数据库添加数据出错 at android.database.sqlite.SQLiteStatement.releaseAndUnlock

原创 2016年06月01日 20:48:35

今天试着做了注册页面往本地数据库添加数据的操作,结果出现了

 

at android.database.sqlite.SQLiteStatement.releaseAndUnlock

这个错误,报错空指针异常,经检查发现原来是当执行插入操作是数据库连接已经关闭掉了,仔细检查改正为每次执行插入操作都关闭数据库连接再重新获取连接,改正后代码如下:

package com.example.sharedpreferences;

import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Register extends Activity{
	private static Button button_register_Register;
	private static EditText edit_username_Register,edit_password_Register;
	private String name;
	private String password;
	private SQLiteDatabase sqldb;
	private SQLiteHelper sqlh;
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.register_layout);
		button_register_Register = (Button)findViewById(R.id.Button_register);
		edit_username_Register = (EditText)findViewById(R.id.Edit_username);
		edit_password_Register = (EditText)findViewById(R.id.Edit_password);
		button_register_Register.setOnClickListener(new ButtonListener());
		
		
		Toast.makeText(this, SQLiteHelper.TABLE_NAME, Toast.LENGTH_SHORT).show();
		
		
	}
	public class ButtonListener implements OnClickListener{
		public void onClick(View v) {
			switch (v.getId()){
			case R.id.Button_register:
				sqlh = new SQLiteHelper(Register.this);
				System.out.println("01");
				//获取数据库写入权限.
				sqldb = sqlh.getWritableDatabase();
				System.out.println("02");
				name = edit_username_Register.getText().toString();
				edit_username_Register.setText("");
				password = edit_password_Register.getText().toString();
				edit_password_Register.setText("");
				String insertquery = "INSERT INTO "+SQLiteHelper.TABLE_NAME+" ("+SQLiteHelper.NAME+","+
				SQLiteHelper.PASSWORD+") VALUES ('"+name+"','"+password+"');";
				sqldb.execSQL(insertquery);
				Toast.makeText(Register.this, "Saved success", Toast.LENGTH_SHORT).show();
				sqldb.close();
			}
		}
		
	}
}

修改了一下午,终于完成了,特此记录,以免日后再次出错


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

at android.database.sqlite.SQLiteStatement.releaseAndUnlock(SQLiteStatement.

项目中有一个删除的动作,需要删除文件以及文件在数据库中的记录,我在删除前进行了一次数据库的查询操作,然后下面进行了删除的动作,报出了这个错误 /** * 从数据库中删除下载任务 * ...

Android应用性能优化之使用SQLiteStatement优化SQLite操作

平常在做Android数据库操作时,都是用的execSQL之个方法. 今天偶然发现了SQLiteStatement这个类.让我想起了在做Java Web开发写JDBC的代码时Prestatement这...

Android应用性能优化之使用SQLiteStatement优化SQLite操作

原文地址:https://liuzhichao.com/p/1664.html 平常在做Android数据库操作时,都是用的execSQL之个方法. 今天偶然发现了SQLiteStatement...

Android Sqlite数据库的操作,其中包含不重复添加数据

首先创建数据库public class MySqLite extends SQLiteOpenHelper { public MySqLite(Context context, String na...

初学Android,数据存储之使用SQLite数据库(四十六)

SQLiteOpenHelper是Android提供的一个管理sqlite数据库的一个工具类主要用于创建一个数据库,并对数据库的版本进行管理。此类为一抽象类,使用是需要继承此类并实现该类的方法 onC...
  • lee576
  • lee576
  • 2012-09-13 17:23
  • 1565

Android中数据的存储方式(二)—SQLite数据库

程序中很重要的一部分是数据的交换,而交换中很重要一点是如何实现数据的存储。根据数据的作用,选择不同的保存方式和使用权限。Android数据的存储有如下6种: 保存数据到应用 程序私有的文件夹下 保存到...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)