LZ说的getWritableDatabase()出错,没有找到根本啊具体的应该是你helper = new DBOpenHelper(context);时,context对象为null 导致你的helper为null 继而 helper.getWritableDatabase()有问题RegisterDAO类中没有Context 对象 你无故的声明一个 是没用的 可以接受开启广播来启动一个服务,用该服务的实例来做context对象
解决方案 »
- android asmack + openfire 通信问题
- webview的loadUrl方法不能用ip地址来搜索吗
- android JNI调试 很多debug信息 求解释!!!!!!!
- 菜单上加按钮的有木有
- android Settings里的通话设置,帐户同步和辅助功能源码更改
- 本人刚接触android,很多不懂,特来求助。。。
- 谁知道android中相机的全景功能是怎么实现的 ?
- 关于httpclient的post请求,处理重定向的问题,,有经验的大神请指教啊
- Activity传值给Fragment问题
- 求助
- android gridView图片显示的问题
- 空指针java.lang.NullPointerException,求高手指导,感谢万分
具体应该怎么做,我是新手,请指导一下
import java.util.List;import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;import com.szy.sqlite.model.Student;/**
* @author coolszy
* @blog http://blog.csdn.net/coolszy
*/
public class StudentDAO
{
private DBOpenHelper helper;
private SQLiteDatabase db; public StudentDAO(Context context)
{
helper = new DBOpenHelper(context);
} /**
* 添加新的学生信息
*
* @param student
*/
public void add(Student student)
{
db = helper.getWritableDatabase();
db.execSQL("insert into t_student (sid,name,age) values (?,?,?)", new Object[]
{ student.getSid(), student.getName(), student.getAge() });
}还是报错为空指针,这是为什么??
package irdc.sqlite.dao;import java.util.ArrayList;
import java.util.List;import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;import irdc.sqlite.model.Register;/**
* @author coolszy
* @blog http://blog.csdn.net/coolszy
*/
public class RegisterDAO
{
private DBOpenHelper helper1 = null;
private SQLiteDatabase db;
public RegisterDAO(Context context)
{
helper1 = new DBOpenHelper(context);
//db = helper.getWritableDatabase();
}
/*添加注册信息*/
public void add(Register register)
{
db = helper1.getWritableDatabase();
db.execSQL("insert into register (name,code) values (?,?)",new Object[]
{ register.getName(), register.getCode() });
}
/**
* 更新注册信息
*
*/
public void update(Register register)
{
db = helper1.getWritableDatabase();
db.execSQL("update register set code = ? where name = ?", new Object[]
{ register.getName(), register.getCode()});
}
/*查找注册信息,验证密码是否正确*/
public Register find(String name)
{
db = helper1.getWritableDatabase();
Cursor cursor = db.rawQuery("select name,code from register where name = ? ", new String[]
{String.valueOf(name)});
if (cursor.moveToNext())
{
return new Register(cursor.getString(cursor.getColumnIndex("name")),cursor.getInt(cursor.getColumnIndex("code")));
}
return null;
}
}
DBOpenHelper
package irdc.sqlite.dao;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;public class DBOpenHelper extends SQLiteOpenHelper
{
private static final int VERSION = 1;
private static final String DBNAME = "data.db";
private static final String REGISTER = "register";
public DBOpenHelper(Context context)
{
super(context, DBNAME, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL("create table "+REGISTER+" (name varchar(20) primary key,code integer)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,int newVerison)
{
Log.i("StudentDAOTest", "UpGrade!");
}
}
EX07_151
package irdc.ex07_15;
/* import相关class */
import irdc.sqlite.dao.RegisterDAO;
import irdc.sqlite.model.Register;
import android.R.integer;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;public class EX07_151 extends Activity
{
private Button button01,button02;
private EditText editName,editCode;
private Context context;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
/* 加载main.xml Layout */
setContentView(R.layout.mylayout);
/* 以findViewById()取得Button对象,并加入onClickListener */
editName = (EditText) findViewById(R.id.name);
editCode = (EditText) findViewById(R.id.code);
button01 = (Button) findViewById(R.id.button01);
button02 = (Button) findViewById(R.id.button02);
button01.setOnClickListener(new Button.OnClickListener()
{
public void onClick (View v)
{
/* new一个Intent对象,并指定要启动的class */
Intent intent = new Intent();
intent.setClass(EX07_151.this, EX07_15.class);
/* 调用一个新的Activity */ startActivity(intent);
/* 关闭原本的Activity */EX07_151.this.finish();
}
});
button02.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
RegisterDAO registerDAO = new RegisterDAO(context);
String name = editName.getText().toString();
Integer code = Integer.parseInt(editCode.getText().toString());
Register register = new Register(name,code);
registerDAO.add(register);
Toast.makeText(EX07_151.this, "保存成功", Toast.LENGTH_LONG).show();
// TODO Auto-generated method stub
}
});
}
}