2015-04-16 3 views
2

Я просто пытаюсь выяснить, как работать с Android-разработчиком Android, и я следил за многими различными учебниками. Но по какой-то причине я не могу заставить работать. Вот код им с помощью:Android SQLite не добавляет значения в db

DBHandler.java

package com.example.deathtrackkevin; 

import java.util.ArrayList; 
import java.util.List; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

public class DbHandler extends SQLiteOpenHelper { 

    // All static variables 
    //Database Version 
    private static final int DATABASE_VERSION = 1; 

    //Database Name 
    private static final String DATABASE_NAME = "DeathTrackDB"; 

    //DeathTrack Table Name 
    private static final String TABLE_DEATHTRACK = "DeathTrack"; 

    //Deathtrack Table Column Names 
    private static final String COL_GAME_ID = "Game_ID"; 
    private static final String COL_GAME_NAME = "Game_Name"; 
    private static final String COL_KILLS = "kills"; 
    private static final String COL_DEATHS = "Deaths"; 
    private static final String COL_DATE = "date"; 
    private static final String COL_MATCH = "Match"; 


    public DbHandler(Context context){ 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    //Creating Tables 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String CREATE_DEATHTRACK_TABLE = 
       "CREATE TABLE" + TABLE_DEATHTRACK + "(" 
       + COL_GAME_ID + "INTEGER PRIMARY KEY," 
       + COL_GAME_NAME + "TEXT," 
       + COL_KILLS + "TEXT," 
       + COL_DEATHS + "TEXT," 
       + COL_DATE + "TEXT," 
       + COL_MATCH + "TEXT" + ")"; 
     db.execSQL(CREATE_DEATHTRACK_TABLE); 
    } 

    //Upgrading Database 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // Drop Older Table If Exists 
     db.execSQL("DROP TABLE IF EXISTS" + TABLE_DEATHTRACK); 
     onCreate(db); 
    } 

    /** 
    * All CRUD(Create, Read, Update, Delete) Operations 
    */ 

    //Adding New Deathtrack TODO Create array for deathtrack 
    void addDeathtrack(DeathTrack deathtrack) { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(COL_GAME_ID, deathtrack.get_game_id()); 
     values.put(COL_GAME_NAME, deathtrack.get_game_name()); 
     values.put(COL_KILLS, deathtrack.get_kills()); 
     values.put(COL_DEATHS, deathtrack.get_Deaths()); 
     values.put(COL_DATE, deathtrack.get_Date()); 
     values.put(COL_MATCH, deathtrack.get_match()); 

     //Inserting Row 
     db.insert(TABLE_DEATHTRACK, null, values); 
     db.close(); 
    } 
    //TODO Getting Single Deathtrack 
    DeathTrack getDeathtrack(int id){ 
     SQLiteDatabase db = this.getReadableDatabase(); 

     Cursor cursor = db.query(TABLE_DEATHTRACK, new String[] {COL_GAME_ID, COL_GAME_NAME, COL_KILLS, COL_DEATHS, COL_DATE, COL_MATCH}, COL_GAME_ID + "=?", new String[] {String.valueOf(id)}, null, null, null, null); 
     if(cursor != null) 
      cursor.moveToFirst(); 

     DeathTrack deathtrack = new DeathTrack(Integer.parseInt(cursor.getString(0)), 
       cursor.getString(1), 
       cursor.getString(2), 
       cursor.getString(3), 
       cursor.getString(4), 
       cursor.getString(5)); 

     return deathtrack; 
    } 

    //TODO Get all deathtrack values  
    public List<DeathTrack> getAllDeathtrack(){ 
     List<DeathTrack> deathtrackList = new ArrayList<DeathTrack>(); 
     //Select all Query 
     String selectWhere = "SELECT * FROM" + TABLE_DEATHTRACK; 

     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectWhere, null); 

     //Looping through all rows and adding to list 
     if(cursor.moveToFirst()){ 
      do{ 
       DeathTrack deathtrack = new DeathTrack(); 
       deathtrack.set_game_name(cursor.getString(0)); 
       deathtrack.set_kills(cursor.getString(1)); 
       deathtrack.set_Deaths(cursor.getString(2)); 
       deathtrack.set_Date(cursor.getString(3)); 
       deathtrack.set_match(cursor.getString(4)); 
       //Add deathtrack to list 
       deathtrackList.add(deathtrack); 
      } while (cursor.moveToNext()); 
     } 
     return deathtrackList; 
    } 
    //TODO Delete deathtrack value by game name 
    public void deleteDeathtrack(DeathTrack deathtrack){ 
     SQLiteDatabase db = this.getWritableDatabase(); 
     db.delete(TABLE_DEATHTRACK, COL_GAME_NAME + "= ?", new String[]{   String.valueOf(deathtrack.get_game_name())}); 
     db.close(); 
    } 


} 

SQLTester.java

package com.example.deathtrackkevin; 

    import java.util.List; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.util.Log; 


    public class SQLTester extends Activity { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.sqltester_layout); 

      DbHandler db = new DbHandler(this); 

      /** 
      * CRUD Operations 
      * */ 
      // Inserting Contacts 
      Log.d("Insert: ", "Inserting .."); 
      db.addDeathtrack(new DeathTrack(1, "cod2", "4", "2", "02-02-12", "1"));   
      db.addDeathtrack(new DeathTrack(2, "cod3", "4", "2", "02-02-12", "1")); 
      db.addDeathtrack(new DeathTrack(3, "cod4", "4", "2", "02-02-12", "1")); 
      db.addDeathtrack(new DeathTrack(4, "cod5", "4", "2", "02-02-12", "1")); 

      // Reading all contacts 
      Log.d("Reading: ", "Reading all contacts.."); 
      List<DeathTrack> contacts = db.getAllDeathtrack();  

      for (DeathTrack cn : contacts) { 
       String log = "Game_Id: "+cn.get_game_id()+" ,Game_Name: " + cn.get_game_name() + " ,Kills: " + cn.get_kills()+ " ,Deaths: " + cn.get_Deaths()+ " ,Date: " + cn.get_Date()+ " ,Match: " + cn.get_match(); 
        // Writing Contacts to log 
      Log.v("dt", "name "+log); 
     } 
     } 
    } 

Вопрос В основном все мне нужно, это кто-то сказать мне, если есть что-то неправильно ..Im не получает никаких ошибок logcat или любых других типов ошибок, поэтому я не могу их использовать, чтобы выяснить, что происходит

С уважением Джо

ответ

1

Похоже, ваша ПРОБЕЛ сломана ...

String CREATE_DEATHTRACK_TABLE = 
      "CREATE TABLE" + TABLE_DEATHTRACK + "(" 
      + COL_GAME_ID + "INTEGER PRIMARY KEY," 
      + COL_GAME_NAME + "TEXT," 
      + COL_KILLS + "TEXT," 
      + COL_DEATHS + "TEXT," 
      + COL_DATE + "TEXT," 
      + COL_MATCH + "TEXT" + ")"; 

И

String selectWhere = "SELECT * FROM" + TABLE_DEATHTRACK; 

не будет работать.
Вместо этого вам нужно написать

String CREATE_DEATHTRACK_TABLE = 
      "CREATE TABLE " + TABLE_DEATHTRACK + " (" 
      + COL_GAME_ID + " INTEGER PRIMARY KEY, " 
      + COL_GAME_NAME + " TEXT, " 
      + COL_KILLS + " TEXT, " 
      + COL_DEATHS + " TEXT, " 
      + COL_DATE + " TEXT, " 
      + COL_MATCH + " TEXT)"; 

И

String selectWhere = "SELECT * FROM " + TABLE_DEATHTRACK; 

[EDIT]

Вы используете зарезервированное слово MATCH.
Вам лучше изменить его на что-то вроде Round или Challenge.
Для справки: https://www.sqlite.org/lang_keywords.html

+0

Эй, спасибо за это, но по какой-то причине, если вы видите в моем SQLTester.java это еще обыкновение показывать мне данные которые вводятся в БД с помощью LogCat ... Любые идеи – Irishdiablo

+0

я Бесполезный Не заметите, что используете зарезервированный KeyWord ** MATCH **. Вы лучше измените его на что-то вроде «Round» или «Challenge». –

+0

Вы имеете в виду ** COL_MATCH ** или ** "=?" **, потому что ** COL_MATCH ** - это просто имя столбца – Irishdiablo