簡體   English   中英

從數據庫表中獲取數據時出錯

[英]Error in fetching data from database table

我正在制作一個Android應用程序。 並試圖從列,名稱和分數中獲取數據

數據庫表,但在運行時出現此錯誤,

抱歉,此應用程序已意外停止。

這是我來自數據庫類的代碼,

public long addscore(String name, int score)
{

    ContentValues values = new ContentValues();
    values.put(KEY_name, name); 
    values.put(KEY_score, score);

    // Inserting Row
    return db.insert(DATABASE_TABLE, null, values);
}
public Cursor getScore(long rowId) throws SQLException 
{
    Cursor mCursor = db.query(true,DATABASE_TABLE, new String[] {
            KEY_scoreid,KEY_name,KEY_score },,KEY_scoreid + "="
            + rowid,null,null,null,null,null);
    if (mCursor != null) 
    {
        mCursor.moveToFirst();
    }
    return mCursor;

}

這是我試圖從中獲取的類代碼

從數據庫表(Highscore.java)中獲取數據,

public class Highscore extends Activity
{
TextView name1,name2,name3,name4,name5,score1,score2,score3,score4,score5;
DBAdapter db1;
Cursor c;
int id;
String n1,n2,n3,n4,n5;
String s1,s2,s3,s4,s5;
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.highscore);
    Button backbtn=(Button)findViewById(R.id.backbtn);

    OnClickListener listener=new OnClickListener() 
    {
        public void onClick(View v) 
        {
            Intent i=new Intent(Highscore.this,MainActivity.class);
            startActivity(i);
            finish();
        }
    };
    backbtn.setOnClickListener(listener);
    id=1;
    name1=(TextView)findViewById(R.id.name1);
    score1=(TextView)findViewById(R.id.score1);



    db1=new DBAdapter(this);
    db1.open();

    c=db1.getScore(1);

        n1=c.getString(1);
        name1.setText(n1);
        s1=c.getString(2);
        score1.setText(s1);

        c=db1.getScore(2);
        n2=c.getString(1);
        name2.setText(n2);
        s2=c.getString(2);
        score2.setText(s2);

    c=db1.getScore(3);
        n3=c.getString(1);
        name3.setText(n3);
        s3=c.getString(2);
        score3.setText(s3);
        id++;   
    c=db1.getScore(4);
        n4=c.getString(1);
        name4.setText(n4);
        s4=c.getString(2);
        score4.setText(s4);
        id++;
    c=db1.getScore(5);
        n5=c.getString(1);
        name5.setText(n5);
        s5=c.getString(2);
        score5.setText(s5);

    c.deactivate();
    c.close();
    db1.close();
    }

}

這次我只獲取5個名稱和分數。

這是我的Logcat錯誤,

09-19 12:01:36.046: D/AndroidRuntime(455): Shutting down VM
09-19 12:01:36.046: W/dalvikvm(455): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
09-19 12:01:36.066: E/AndroidRuntime(455): FATAL EXCEPTION: main
09-19 12:01:36.066: E/AndroidRuntime(455): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.quizapp/com.example.quizapp.Highscore}: java.lang.NullPointerException
09-19 12:01:36.066: E/AndroidRuntime(455):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
09-19 12:01:36.066: E/AndroidRuntime(455):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
09-19 12:01:36.066: E/AndroidRuntime(455):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
09-19 12:01:36.066: E/AndroidRuntime(455):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
09-19 12:01:36.066: E/AndroidRuntime(455):  at android.os.Handler.dispatchMessage(Handler.java:99)
09-19 12:01:36.066: E/AndroidRuntime(455):  at android.os.Looper.loop(Looper.java:123)
09-19 12:01:36.066: E/AndroidRuntime(455):  at android.app.ActivityThread.main(ActivityThread.java:4627)
09-19 12:01:36.066: E/AndroidRuntime(455):  at java.lang.reflect.Method.invokeNative(Native Method)
09-19 12:01:36.066: E/AndroidRuntime(455):  at java.lang.reflect.Method.invoke(Method.java:521)
09-19 12:01:36.066: E/AndroidRuntime(455):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-19 12:01:36.066: E/AndroidRuntime(455):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-19 12:01:36.066: E/AndroidRuntime(455):  at dalvik.system.NativeStart.main(Native Method)
09-19 12:01:36.066: E/AndroidRuntime(455): Caused by: java.lang.NullPointerException
09-19 12:01:36.066: E/AndroidRuntime(455):  at com.example.quizapp.Highscore.onCreate(Highscore.java:59)
09-19 12:01:36.066: E/AndroidRuntime(455):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-19 12:01:36.066: E/AndroidRuntime(455):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
09-19 12:01:36.066: E/AndroidRuntime(455):  ... 11 more

如果您的人沒有從我的問題中得到任何幫助,請提出..請幫助我解決錯誤。

提前致謝

從我看來,您的問題不在數據庫連接中,您有一些未處理的異常。 在onCreate(Highscore.java:59)中也有一個NULL指針異常

您可以做一件事:注釋部分代碼,直到獲得可以運行的應用程序(不執行任何操作),然后取消注釋,直到找到使應用程序崩潰的確切代碼,這很容易做到,通常您會找到有問題的

祝好運

使用此代碼插入您的.....

public Cursor getScore(long rowId) throws SQLException 

{

 Cursor mCursor = db.query(true,DATABASE_TABLE, new String[] {
            KEY_scoreid,KEY_name,KEY_score },KEY_scoreid + " ='"
            + rowid + "'",null,null,null,null,null);

  if (mCursor != null) 
    {
        mCursor.moveToFirst();
    }
    return mCursor;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM