Я просто пытаюсь выяснить, как работать с 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 или любых других типов ошибок, поэтому я не могу их использовать, чтобы выяснить, что происходит
С уважением Джо
Эй, спасибо за это, но по какой-то причине, если вы видите в моем SQLTester.java это еще обыкновение показывать мне данные которые вводятся в БД с помощью LogCat ... Любые идеи – Irishdiablo
я Бесполезный Не заметите, что используете зарезервированный KeyWord ** MATCH **. Вы лучше измените его на что-то вроде «Round» или «Challenge». –
Вы имеете в виду ** COL_MATCH ** или ** "=?" **, потому что ** COL_MATCH ** - это просто имя столбца – Irishdiablo