У меня есть встроенная база данных с моим приложением.это в папке активов.Пользователь должен иметь возможность добавлять новые строки в базу данных по нажатию кнопки.У меня есть следующий код для этого:
insertrow.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
db.open();
try
{
String editmacs=editmac.getText().toString();
db.insertrow(editmacs);
// Context context = getApplicationContext();
}
catch (Exception ex)
{
Toast.makeText(getApplicationContext(), "cannot update", Toast.LENGTH_LONG).show();
}
db.close();
}
});
и соответствующий метод в моем классе SQliteOpenHelper:
public static SQLiteDatabase myDb;
public static String DATABASE_TABLE="access_points";
public static final String KEY_column1 = "col1";
public static final String KEY_column2 = "col2";
public static final String KEY_column3= "col3";
public static final String KEY_column4 = "col4";
public long insertrow(String editmacs)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_column1, editmacs);
initialValues.put(KEY_column2, "uf");
initialValues.put(KEY_column3, "ub");
initialValues.put(KEY_column4, "uz");
return myDb.insert(DATABASE_TABLE, null, initialValues);
}
Проблема заключается в нажатии кнопки editmacs (KEY_column1) не вставленв базу данных.Но другие значения (ДЛЯ ПРИМЕРА "uz") вставлены (я проверил вставленные значения с SQL-запросом).Во время вставки с помощью кнопки я не получаю никаких исключений.Может кто-нибудь сказать, почему значение editmacs из edittext не вставляется?Заранее спасибо.
Хорошо, я получил решение из комментариев Гийома (см. Ниже).Запросы, связанные с вставкой, в порядке.Проблема в другом.Посмотрите на следующий код:
buttonuserentry.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
db.open();
try
{
String mac = "";
mac = db.getuserentry();
Context context = getApplicationContext();
String text = mac;
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
catch (Exception ex)
{
Context context = getApplicationContext();
CharSequence text = ex.toString();
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
db.close();
}
});
ранее, я использовал это:
CharSequence mac = "";
mac = db.getuserentry();
Context context = getApplicationContext();
String text = mac;
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
Поскольку я использовал CharSequence, он показывал последний вставленный MAC-адрес из исходной базы данных.Исходная встроенная база данных объявила этот столбец как Text (так что это означает Text = CharSequence в Sqliteman).Мой ожидаемый mac-адрес - последний введенный пользователем mac-адрес.Этот mac-адрес из представления editmac преобразуется в строку.Таким образом, нужно получить его как String, а не как CharSequence.Еще раз спасибо за помощь Гийома в направлении меня к решению.