【发布时间】:2019-12-05 06:33:59
【问题描述】:
我正在尝试将数据插入到 android studio 上的数据库中,代码运行没有错误,但是数据没有添加到数据库表中。 我需要传递的数据是电影的标题、复仇者联盟和放映时间 10:00
这是我的数据库助手类
package com.missouristate.bryson.finalp;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DABASE_NAME = "Movies.db";
public static final String TABLE_NAME = "movies_table";
public static final String ID = "_ID";
public static final String NAME = "Movie_Name";
public static final String SHOWTIME = "Showtime";
public DatabaseHelper(@Nullable Context context) {
super(context, DABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sqlCreate = "CREATE TABLE " + TABLE_NAME + "( " + ID;
sqlCreate += " integer primary key autoincrement, " + NAME;
sqlCreate += "text, " + SHOWTIME + " text, )";
db.execSQL(sqlCreate);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME );
onCreate(db);
}
public boolean addMovie( String name, String showtime) {
ContentValues contentValues = new ContentValues();
contentValues.put("MOVIE", name);
contentValues.put("SHOWTIME", showtime);
long result = getWritableDatabase().insert(TABLE_NAME, null, contentValues);
if(result == -1)
return false;
else
return true;
}
}
这是我的表演时间课
package com.missouristate.bryson.finalp;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class showtimes extends Activity {
DatabaseHelper myDB;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.showtimesview);
myDB= new DatabaseHelper(this);
myDB.addMovie(" Avengers", " 1000");
}
}
任何帮助/建议将不胜感激。谢谢!
更新日志——将 addMovie 方法更改为
public void addMovie( String name, String showtime) {
SQLiteDatabase db = this.getWritableDatabase();
db.beginTransaction();
try {
ContentValues contentValues = new ContentValues();
contentValues.put("MOVIE", name);
contentValues.put("SHOWTIME", showtime);
db.insertOrThrow(TABLE_NAME, null, contentValues);
db.setTransactionSuccessful();
} catch (Exception e) {
Log.d("insert", "Error while trying to add post to database");
} finally {
db.endTransaction();
}
日志仍然显示数据没有被添加到数据库中
【问题讨论】:
-
插入后是否检查结果标志的值?并使用 try catch 块进行与数据库相关的操作,以便万一您遇到任何异常,它将得到咳嗽
-
我加了一个try catch和一个日志,日志显示数据没有被添加到数据库中。我不确定我是否遗漏了什么。
-
尝试在你的 catch 块中打印 e.getMessage() ,它会给你一个带有异常代码的简短消息,这将有助于你进一步调查
标签: database sqlite android-studio