Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中的SQL数据库不起作用_Java_Android_Sql_Database_Android Sqlite - Fatal编程技术网

Java Android中的SQL数据库不起作用

Java Android中的SQL数据库不起作用,java,android,sql,database,android-sqlite,Java,Android,Sql,Database,Android Sqlite,我正在尝试创建一个包含3列的数据库,分别为:name、wins、loss。 数据表应该只有一行-只有一个播放器。 我试着这么做,但它不工作,应用程序总是崩溃。 我有两个活动和一个普通班。在主活动中,它检查玩家的名字是否在数据库中,如果没有,它会要求玩家输入他的名字。 在第二个活动(GameActivity)中,它假设向我显示他的名字以及他在电脑上赢了多少次和输了多少次。这里有两个按钮,添加赢和添加输,每个按钮都应该增加赢或输的数量。 sql数据库类扩展SQLiteOpenHelper 主要活动

我正在尝试创建一个包含3列的数据库,分别为:name、wins、loss。 数据表应该只有一行-只有一个播放器。 我试着这么做,但它不工作,应用程序总是崩溃。 我有两个活动和一个普通班。在主活动中,它检查玩家的名字是否在数据库中,如果没有,它会要求玩家输入他的名字。 在第二个活动(GameActivity)中,它假设向我显示他的名字以及他在电脑上赢了多少次和输了多少次。这里有两个按钮,添加赢和添加输,每个按钮都应该增加赢或输的数量。 sql数据库类扩展SQLiteOpenHelper

主要活动

SQLGameTable db;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button) findViewById(R.id.leaderboards);
    db = new SQLGameTable(this);
    if(db.getName() == "")
    {
        final Score score = new Score("", 0, 0);
        Button send = (Button) findViewById(R.id.btnSend);
        final EditText et = (EditText) findViewById(R.id.editText1);
        send.setVisibility(android.view.View.VISIBLE);
        et.setVisibility(android.view.View.VISIBLE);
        send.setOnClickListener(new OnClickListener()
        {       
            @Override
            public void onClick(View v)
            {
                String name = et.getText().toString();
                score.setName(name);
            }
        });
        db.addPlayer("Daniel", score.getWins(), score.getLoses());
        send.setVisibility(android.view.View.INVISIBLE);
        et.setVisibility(android.view.View.INVISIBLE);
    }
    final Intent i = new Intent(this, GameActivity.class);
    btn.setOnClickListener(new OnClickListener() 
    {           
        @Override
        public void onClick(View v) 
        {
            startActivity(i);
        }
    });
}
配子活动

Button aWin, aLose;
SQLGameTable scoreTable;
TextView tv1, tv3, tv4;
Score score;
String name;
int win=0, lose=0;
@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_game);
    scoreTable = new SQLGameTable(this);
    aWin = (Button) findViewById(R.id.button1);
    aLose = (Button) findViewById(R.id.button2);
    tv1 = (TextView) findViewById(R.id.textView1);
    tv3 = (TextView) findViewById(R.id.textView3);
    tv4 = (TextView) findViewById(R.id.textView4);
    name = scoreTable.getName();
    win = scoreTable.getWin();
    lose = scoreTable.getLose();
    tv1.setText(name + "");
    tv3.setText(win + "");
    tv4.setText(lose + "");
    aLose.setOnClickListener(new OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {
            lose++;
            scoreTable.reset();
            scoreTable.addPlayer(name, win, lose);
            lose = scoreTable.getLose();
            tv4.setText("" + (lose));
        }
    });
    aWin.setOnClickListener(new OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {
            win++;
            scoreTable.reset();
            scoreTable.addPlayer(name, win, lose);
            win = scoreTable.getWin();
            tv3.setText("" + (win));
        }
    });
}
SQLGameTable扩展了SQLiteOpenHelper

public static String DATABASE_NAME = "highscores";
public static String TABLE_NAME = "scores";
public static String KEY_ID = "id";
public static String KEY_NAME = "name";
public static String KEY_WIN = "win";
public static String KEY_LOSE = "lose";
public SQLGameTable(Context c) 
{
    super(c, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) 
{
    String sql = "CREATE TABLE IF NOT EXISTS scores (id INTEGER PRIMARY KEY AUTOINCREMENT, name STRING, win INTEGER, lose INTEGER)";
    db.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
{

}

public void addPlayer(String name, int win, int lose) 
{
    ContentValues values = new ContentValues();
    values.put(KEY_NAME, name);
    values.put(KEY_WIN, win);
    values.put(KEY_LOSE, lose);
    SQLiteDatabase db = getWritableDatabase();
    db.insert(TABLE_NAME, null, values);
    db.close();
}
public void reset() 
{
    SQLiteDatabase db = getWritableDatabase();
    db.delete(TABLE_NAME, null, null);
    db.close();
}
public String getName() 
{
    String sql = "SELECT * FROM " + TABLE_NAME;
    SQLiteDatabase db = getWritableDatabase();
    Cursor c = db.rawQuery(sql, null);
    int row = c.getColumnIndex(KEY_NAME);
    db.close();
    return c.getString(row);
}
public int getWin() 
{
    String sql = "SELECT * FROM " + TABLE_NAME;
    SQLiteDatabase db = getWritableDatabase();
    Cursor c = db.rawQuery(sql, null);
    int row = c.getColumnIndex(KEY_WIN);
    db.close();
    return Integer.parseInt(c.getString(row));
}
public int getLose() 
{
    String sql = "SELECT * FROM " + TABLE_NAME;
    SQLiteDatabase db = getWritableDatabase();
    Cursor c = db.rawQuery(sql, null);
    int row = c.getColumnIndex(KEY_LOSE);
    db.close();
    return Integer.parseInt(c.getString(row));
}

定义
无效
。你的logcat怎么说?你能给我们一个堆栈跟踪吗?在我点击按钮启动另一个活动后,它崩溃了,上面写着“不幸的是,APP_NAME已经停止”。堆栈跟踪是什么,我该怎么做?
你不这么做,它会自然而然地发生。这是logcat报道的。我希望您已经在IDE配置中设置了logcat视图。。。