繁体   English   中英

尝试将数据插入表时出错

[英]Error when trying to insert data into the table

我正在使用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)在“ Link”附近:语法错误E / SQLiteDatabase:插入Music Link = https:// www时出错.soundhelix.com / audio-examples android.database.sqlite.SQLiteException:在“链接”附近:语法错误(代码1) :,而在编译时:在android.database.sqlite上插入SongList_Table(音乐链接)值(?)。 android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:898)上的SQLiteConnection.nativePrepareStatement(本地方法)android.database.sqlite.SQLiteSession上android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:509)上的SQLiteConnection。在android.database.sqlite.SQLiteProgram上准备(SQLiteSession.java:588)在android.database.sqlite.SQLiteStatement。(SQLiteStatement.java:31)处android.database.sqlite.SQLite.SQLiteProgram.java:58)在android.database.sqlite.SQLite.SQLiteDatabase.insertWithOnConflict (sqliteDatabase.java:1500),网址为android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1373)。 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.os.Handler.handleCallback(Handler.java:836)的android.view.View $ PerformClick.run(View.java:22651)的android.view.View.performClick(View.java:5675) .java.lang.reflect.Method上的.Handler.dispatchMessage(Handler.java:103)在android.os.Looper.loop(Looper.java:208)在android.app.ActivityThread.main(ActivityThread.java:6304)。在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)处com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1063)处调用(本机方法)

编辑:即使在对Column1和createTable字符串进行更改之后,在将链接插入SQLite时也遇到了相同的错误。

Edit2:原来我只需要卸载应用程序。 谢谢@forpas

编辑3:现在在getData方法上出现错误😭

那是因为"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)";

改成:

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

然后从设备上卸载应用程序,以便删除数据库并重新运行以重新创建数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM