LZ说的getWritableDatabase()出错,没有找到根本啊具体的应该是你helper = new DBOpenHelper(context);时,context对象为null 导致你的helper为null  继而 helper.getWritableDatabase()有问题RegisterDAO类中没有Context 对象 你无故的声明一个  是没用的   可以接受开启广播来启动一个服务,用该服务的实例来做context对象

解决方案 »

  1.   

    开启广播来启动一个服务,用该服务的实例来做context对象
    具体应该怎么做,我是新手,请指导一下
      

  2.   

    package com.szy.sqlite.dao;import java.util.ArrayList;
    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() });
    }还是报错为空指针,这是为什么??
      

  3.   

    RegisterDAO
    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
            
          }  
        });
      }
    }