Ошибка при попытке вставить данные в таблицу - PullRequest
0 голосов
/ 18 мая 2019

Я использую Android studio.Я пытаюсь вставить ссылки в SQLite, но продолжаю получать сообщение об ошибке в методе boolean addData.

Все мои операции импорта / коды кажутся правильными.Я просто не уверен, почему я получаю эти ошибки.Нужно ли добавлять разрешение?

Это код для методов базы данных:

public class DataBase extends SQLiteOpenHelper {

private static final String TAG = "Database";
private static final String TABLE_NAME = "SongList_Table";
private static final String Column0 = "ID";
private static final String Column1 ="Music Link";


public DataBase(Context context){
    super(context, TABLE_NAME, null, 1);

}

public Cursor getData(){
    SQLiteDatabase db = this.getWritableDatabase();
    String query = "SELECT * FROM " + TABLE_NAME;
    Cursor data = db.rawQuery(query, null);
    return data;
}

public boolean addData(String item){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(Column1, item);

    Log.d(TAG, "addData: Adding " + item + " to " + TABLE_NAME);
    long result = db.insert(TABLE_NAME, null, contentValues);
    if(result <0){
        return false;
    }
    else {
        return true;
    }
}
@Override
public void onCreate(SQLiteDatabase db) {
    String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " + Column1 + "TEXT)";
    db.execSQL(createTable);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(db);
}

}

Ошибки:

D / База данных: addData: Добавление https://www.soundhelix.com/audio-examples в SongList_Table E / SQLiteLog: (1) рядом с «Ссылкой»: синтаксическая ошибка E / SQLiteDatabase: Ошибка при вставке музыкальной ссылки = https://www.soundhelix.com/audio-examples android.database.sqlite.SQLiteException: рядом с «Link»: синтаксическая ошибка (код 1): при компиляции: INSERT INTO SongList_Table (Music Link) VALUES (?) В android.database.sqlite.SQLiteConnection.nativePrepareStatement (собственный метод) в android.database.sqlite.SQLiteConnection.acquirePreparedStatement (SQLiteConnection.java:898) в android.database.sqlite.SQLiteConnection.prepare (SQLiteConnection.java:509) в android.database.sqlite.SQLiteSession.prepare (SQLiteSession.java:5atabase.sqlite.SQLiteProgram. (SQLiteProgram.java:58) в android.database.sqlite.SQLiteStatement. (SQLiteStatement.java:31) в android.database.sqlite.SQLiteDatabase.insertWithOnConflict (SQLiteDatabase.java: 1500) в android.database.sqlite.SQLiteDatabase.insert (SQLiteDatabase.java:1373) в com.example.mobilecomputingcw2.DataBase.addData (DataBase.java:37) в com.example.mobilecomputingcw2.MainActivity.dataAdd (MainActivity).java: 69) на com.example.mobilecomputingcw2.MainActivity $ 1.onClick (MainActivity.java:47) на android.view.View.performClick (View.java:5675) на android.view.View $ PerformClick.run (Просмотреть.java: 22651) на android.os.Handler.handleCallback (Handler.java:836) на android.os.Handler.dispatchMessage (Handler.java:103) на android.os.Looper.loop (Looper.java:208)в android.app.ActivityThread.main (ActivityThread.java:6304) в java.lang.reflect.Method.invoke (собственный метод) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1063)at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:924)

Редактировать: Даже после изменений в Column1 и createTable String я получаю ту же ошибку при вставке ссылокв SQLite.

Edit2: TУрны, я просто должен был удалить приложение.Спасибо @ forpas

Редактировать 3: теперь я получаю сообщение об ошибке в методе getData ?

Ответы [ 2 ]

2 голосов
/ 18 мая 2019

Это из-за пробела в "Music Link".Измените его на подчеркивание (или любую другую строку)

...
private static final String Column1 ="Music_Link";
...

или заключите в кавычки

...
private static final String Column1 ="\"Music Link\"";
...

И здесь

...
String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " + Column1 + "TEXT)";
...

пробел передTEXT.Это скорее должно быть

String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " + Column1 + " TEXT)";
0 голосов
/ 18 мая 2019

Изменить на:

private static final String Column1 ="[Music Link]";

затем удалите приложение с устройства, чтобы база данных была удалена, и снова запустите ее, чтобы заново создать базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...