[英]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.