我想在第二个活动中向我的数据库插入一条记录

时间:2014-03-05 21:14:26

标签: android sqlite android-activity

我是Android编程新手。所以,我会用错误的技术词,对不起;) 我有一个应用程序。在这个应用程序,onCreate,我正在检查我的数据库是否已创建(此检查是第一次使用),如果我的数据库尚未创建,我将路由用户转到第二个布局(或者激活。我不能确保一个人说得对。)在此活动中,当我尝试创建一个具有空指针异常的SQLiteDatabase参数时。 这是MainActivity.java的一部分

public class MainActivity extends Activity 
{
  VeriTabani veritabani; // vertiabani means database in turkish 
  @Override
  protected void onCreate(Bundle savedInstanceState) 
  {

    if(db_flag==0)
    {

      Intent intent = new Intent(MainActivity.this, SecondClass.class);
      startActivity(intent);
      //...
    }
  }
}

这是我的VeriTabani.java;

public class VeriTabani extends SQLiteOpenHelper 
{
   static final String VeriTabani="DATABASENAME";
   static final int version=1;
   public VeriTabani(Context context) {
     super(context, VeriTabani, null, version);
   }    

   @Override
   public void onCreate(SQLiteDatabase db) {
      db.execSQL("CREATE TABLE  TABLENAME ( id INTEGER PRIMARY KEY AUTOINCREMENT, xxx STRING,yyy STRING );");
   }

   @Override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
      db.execSQL("DROP TABLE IF EXIST TABLENAME");
      onCreate(db);
   }
}

而且,这是我的SecondClass.java;

public class SecondClass extends Activity 
{
     VeriTabani veritabani;

     @Override
     public void onCreate(Bundle savedInstanceState) 
     {
        super.onCreate(savedInstanceState);    
        button.setOnClickListener(new View.OnClickListener() 
        {
           @Override
           public void onClick(View v) 
           {
              SQLiteDatabase db=veritabani.getWritableDatabase(); 
              ContentValues cv=new ContentValues();
              cv.put("xxx", another_parameter);
              //...
           }
           //...
        }
     }
}

我在这条线上有错误;

SQLiteDatabase db = veritabani.getWritableDatabase();

我正在使用相同的VeriTabani类在MainActivity中向DB插入记录,并且它运行良好。当我在另一个活动中使用相同的代码块时,我无法承受什么错误。 我想解决很简单,但我无法得到它。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

你刚宣布了你的变量

 VeriTabani veritabani; 

您尚未初始化该变量。你需要在onCreate()方法上初始化它。

 veritabani = new VeriTabani(YourActivityName.this);

答案 1 :(得分:0)

  

我在这条线上有错误;

SQLiteDatabase db=veritabani.getWritableDatabase();

您似乎没有初始化veritabani变量。

将以下内容添加到该活动的onCreate()

veritabani = new VeriTabani(this);