У меня есть база данных, которую я реализовал для хранения в ней некоторых данных. У меня нет ошибок, но моя функция InsertData не работает с двумя параметрами!
public class PersonDataBaseHelper {
private static final String TAG = PersonDataBaseHelper.class.getSimpleName();
// database configuration
// if you want the onUpgrade to run then change the database_version
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "mydatabase.db";
// table configuration
private static final String TABLE_NAME = "person_table"; // Table name
private static final String PERSON_TABLE_COLUMN_ID = "_id";
// a column named "_id" is required for cursor
private static final String PERSON_TABLE_COLUMN_NAME = "person_name";
private static final String PERSON_TABLE_COLUMN_USERNAME = "person_username";
private DatabaseOpenHelper openHelper;
private SQLiteDatabase database;
// this is a wrapper class. that means, from outside world, anyone will communicate with PersonDatabaseHelper,
// but under the hood actually DatabaseOpenHelper class will perform database CRUD operations
public PersonDataBaseHelper(Context aContext) {
openHelper = new DatabaseOpenHelper(aContext);
database = openHelper.getWritableDatabase();
database = openHelper.getReadableDatabase();
}
public Cursor getAllData () {
String buildSQL = "SELECT * FROM " + TABLE_NAME;
Log.d(TAG, "getAllData SQL: " + buildSQL);
return database.rawQuery(buildSQL, null);
}
public void insertData (String aPersonName,String username) {
// we are using ContentValues to avoid sql format errors
ContentValues contentValues = new ContentValues();
contentValues.put(PERSON_TABLE_COLUMN_NAME, aPersonName);
contentValues.put(PERSON_TABLE_COLUMN_USERNAME, username);
database.insert(TABLE_NAME, null, contentValues);
}
public Cursor getSomeData(String text){
return database.query(TABLE_NAME, new String[] {PERSON_TABLE_COLUMN_ID,PERSON_TABLE_COLUMN_NAME},
PERSON_TABLE_COLUMN_NAME + " LIKE ?", new String[] {"%" + text + "%"},
null, null, null);
}
public boolean deleteSingleRow(long rowId)
{
return database.delete(TABLE_NAME, PERSON_TABLE_COLUMN_ID + "=" + rowId, null) > 0;
}
// this DatabaseOpenHelper class will actually be used to perform database related operation
private class DatabaseOpenHelper extends SQLiteOpenHelper {
public DatabaseOpenHelper(Context aContext) {
super(aContext, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
// Create your tables here
String buildSQL = "CREATE TABLE " + TABLE_NAME + "( " + PERSON_TABLE_COLUMN_ID + " INTEGER PRIMARY KEY, " +
PERSON_TABLE_COLUMN_NAME+" TEXT,"+PERSON_TABLE_COLUMN_USERNAME+" TEXT )";
Log.d(TAG, "onCreate SQL: " + buildSQL);
sqLiteDatabase.execSQL(buildSQL);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
// Database schema upgrade code goes here
String buildSQL = "DROP TABLE IF EXISTS " + TABLE_NAME;
Log.d(TAG, "onUpgrade SQL: " + buildSQL);
sqLiteDatabase.execSQL(buildSQL); // drop previous table
onCreate(sqLiteDatabase); // create the table from the beginning
}
}
Моя функция вставки данных не работает из-за второго параметра. Если я прокомментирую эту строку:
Моя функция InsertData работает нормально... Я не могу найти проблему в своей базе данных. Все остальные функции работают из моей базы данных. Я новичок в программировании под Android. Извините, если я не очень хорошо написал по-английски
У меня есть база данных, которую я реализовал для хранения в ней некоторых данных. У меня нет ошибок, но моя функция InsertData не работает с двумя параметрами! [code]public class PersonDataBaseHelper {
private static final String TAG = PersonDataBaseHelper.class.getSimpleName();
// database configuration // if you want the onUpgrade to run then change the database_version private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "mydatabase.db";
// table configuration private static final String TABLE_NAME = "person_table"; // Table name private static final String PERSON_TABLE_COLUMN_ID = "_id"; // a column named "_id" is required for cursor
private static final String PERSON_TABLE_COLUMN_NAME = "person_name"; private static final String PERSON_TABLE_COLUMN_USERNAME = "person_username";
// this is a wrapper class. that means, from outside world, anyone will communicate with PersonDatabaseHelper, // but under the hood actually DatabaseOpenHelper class will perform database CRUD operations public PersonDataBaseHelper(Context aContext) {
return database.query(TABLE_NAME, new String[] {PERSON_TABLE_COLUMN_ID,PERSON_TABLE_COLUMN_NAME}, PERSON_TABLE_COLUMN_NAME + " LIKE ?", new String[] {"%" + text + "%"}, null, null, null);
}
public boolean deleteSingleRow(long rowId) {
return database.delete(TABLE_NAME, PERSON_TABLE_COLUMN_ID + "=" + rowId, null) > 0; } // this DatabaseOpenHelper class will actually be used to perform database related operation
private class DatabaseOpenHelper extends SQLiteOpenHelper {
public DatabaseOpenHelper(Context aContext) { super(aContext, DATABASE_NAME, null, DATABASE_VERSION); }
@Override public void onCreate(SQLiteDatabase sqLiteDatabase) { // Create your tables here
@Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) { // Database schema upgrade code goes here
String buildSQL = "DROP TABLE IF EXISTS " + TABLE_NAME;
Log.d(TAG, "onUpgrade SQL: " + buildSQL);
sqLiteDatabase.execSQL(buildSQL); // drop previous table
onCreate(sqLiteDatabase); // create the table from the beginning } } [/code] Моя функция вставки данных не работает из-за второго параметра. Если я прокомментирую эту строку: [code]contentValues.put(PERSON_TABLE_COLUMN_USERNAME, username) [/code] Моя функция InsertData работает нормально... Я не могу найти проблему в своей базе данных. Все остальные функции работают из моей базы данных. Я новичок в программировании под Android. Извините, если я не очень хорошо написал по-английски