2014-05-03 37 views
-1

我得到了我DBAdapter.java,我創建數據庫等..和我得到了以下(當我把這個應該有數據爲DB):現在將對DBAdapter插入數據

public long insertRow(String valorglicemico, String datahora) { 

     ContentValues initialValues = new ContentValues(); 
     initialValues.put(KEY_VALORGLICEMICO, valorglicemico); 
     initialValues.put(KEY_DATAHORA, datahora); 
     return db.insert(DATABASE_TABLE, null, initialValues); 
    } 

,我mainActivity這就是我所說的以前的東西,我有一個是在等待着什麼按鈕:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_diab2014_activity_1);   


     // enable the home button 
     ActionBar actionBar = getSupportActionBar(); 
     actionBar.setHomeButtonEnabled(true); 

     btn1 = (Button)findViewById(R.id.button1);   

    value = (EditText)findViewById(R.id.editText2); 

    btn1.setOnClickListener(new View.OnClickListener() {   

    public void onClick(View v) { 

        String a = value.getText().toString(); 
        String b = ""; 

        myDB.insertRow(a, b); 
       } 
    }); 

的logcat:

E/AndroidRuntime(1267): FATAL EXCEPTION: main 
E/AndroidRuntime(1267): Process: com.example.project, PID: 1267 
E/AndroidRuntime(1267): java.lang.NullPointerException 
E/AndroidRuntime(1267):  at com.example.projdiab2014.Diab2014Activity_1$1.onClick(mainActivity.java:53) 
E/AndroidRuntime(1267):  at android.view.View.performClick(View.java:4438) 
E/AndroidRuntime(1267):  at android.view.View$PerformClick.run(View.java:18422) 
E/AndroidRuntime(1267):  at android.os.Handler.handleCallback(Handler.java:733) 
E/AndroidRuntime(1267):  at android.os.Handler.dispatchMessage(Handler.java:95) 
E/AndroidRuntime(1267):  at android.os.Looper.loop(Looper.java:136) 
E/AndroidRuntime(1267):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
E/AndroidRuntime(1267):  at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(1267):  at java.lang.reflect.Method.invoke(Method.java:515) 
E/AndroidRuntime(1267):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
E/AndroidRuntime(1267):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
E/AndroidRuntime(1267):  at dalvik.system.NativeStart.main(Native Method) 

難道I F什麼東西?

+1

是的,你忘了格式化代碼,以便在閱讀它;-) – hgoebl

+0

你的意思是logcat的,我們沒有得到頭痛?最後一部分是錯誤 – imo

+0

您在使用它們之前是否聲明瞭值和btn1?該代碼未顯示。 –

回答

0

你在這裏定義myDb?數據庫應該得到一個上下文參數,但我看不到定義。這可能是你的問題。在做數據庫操作時總是使用try catch。這裏是一個定義數據庫幫助器並將一條記錄插入到table中的例子。我嘗試了代碼,它正在工作。

public class DbHelper extends SQLiteOpenHelper { 

public static final String TAG = "db"; 
public static final int VERSION = 1; 

public DbHelper(Context context) { 
    super(context, "mydb", null, VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("CREATE TABLE IF NOT EXISTS " + "MY_TABLE" 
      + " (NAME TEXT PRIMARY KEY, " + "SURNAME TEXT);"); 
} 

public long insertRow(String valorglicemico, String datahora) { 
    final SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues initialValues = new ContentValues(); 
    long retval = 0; 
    try { 
     initialValues.put("NAME", valorglicemico); 
     initialValues.put("SURNAME", datahora); 
     retval = db.insert("MY_TABLE", null, initialValues); 
    } catch (Exception e) { 
     Log.e(TAG, "insertRow exception", e); 
    } finally { 
     db.close(); 
    } 
    return retval; 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 

} 
} 

而且在活動類

dbHelper = new DbHelper(this); 
name = (EditText) findViewById(R.id.editText1); 
button = (Button) findViewById(R.id.button1); 
button.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    String a = name.getText().toString(); 
    String b = ""; 
    long val = dbHelper.insertRow(a, b); 
    Log.d("DB", val+""); 
    } 
});