【问题标题】:How to insert multiple data in sqlite android studio如何在sqlite android studio中插入多个数据
【发布时间】:2021-05-25 11:27:02
【问题描述】:

你好,我是 android studio 的新手,我有 2 个表 DB,第一个表是 budaya,第二个是 sejarah。当我尝试使用值将数据插入到表 budaya 时,它可以工作,但是当我想将数据插入到表 sejarah 时,它没有显示的数据,请帮助我。

这是我的错误代码

public class Database extends SQLiteOpenHelper{
    final static String DB_NAME = "db_budaya";

    public Database(Context context) {
        super(context, DB_NAME, null, 8);
// TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "CREATE TABLE IF NOT EXISTS budaya(_id INTEGER PRIMARY KEY AUTOINCREMENT, nama TEXT, kategori TEXT, deskripsi TEXT, img BLOB)";
        db.execSQL(sql);
        
        String sql1 = "CREATE TABLE IF NOT EXISTS sejarah(_id INTEGER PRIMARY KEY AUTOINCREMENT, materi TEXT)";
        db.execSQL(sql1);
        
        ContentValues values = new ContentValues();
        // Budaya table
        values.put("_id", "1");
        values.put("nama", "Suhunan Jolopong");
        values.put("kategori", "Rumah Adat");
        values.put("deskripsi", "Suhunan Jolopong, yaitu bentuk bangunan yang atapnya (suhunan) memanjang, sering disebut suhunan panjang atau gagajahan. Bentuk Jolopong sendiri memiliki dua bidang atap. ");
        values.put("img", R.drawable.imv_rumahadat_joloponggagajahan);
        db.insert("budaya", "_id", values);
        
        ContentValues values1 = new ContentValues();
        // Sejarah table
        values.put("_id", "1");
        values.put("materi", "Hello world");
        db.insert("sejarah", "_id", values1);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS budaya");
        onCreate(db);
        
        db.execSQL("DROP TABLE IF EXISTS sejarah");
        onCreate(db1);

    }

}

请帮忙,谢谢。

【问题讨论】:

  • 使用房间数据库而不是 SQLiteOpenHelper 希望对你有帮助!
  • 在插入值后删除表。另外,db1 是什么?

标签: java android sqlite android-sqlite sql-insert


【解决方案1】:

您将values1 实例化为ContentValues 对象以用于在sejarah 中插入新行,但您使用包含表budaya 的值的values
也不需要为自动递增的列传递值:

ContentValues values1 = new ContentValues();
values1.put("materi", "Hello world");
db.insert("sejarah", null, values1);

【讨论】:

  • 所以我必须将 values.put 更改为 values1.put,对吧?
  • @SmittyWerben 是的,不要为_id 传递值。
【解决方案2】:

到目前为止,我对您的代码只有一个疑问。你可以使用下面的代码sn-p。

    ContentValues values1 = new ContentValues();
    // Sejarah table
    // values.put("_id", "1"); // <- Comment it
    values.put("materi", "Hello world");
    db.insert("sejarah", "_id", values1);

因为,values.put("_id", "1"); 这行可能是问题所在,因为你有 _id INTEGER PRIMARY KEY AUTOINCREMENT 所以你不必隐式设置值。

【讨论】:

    猜你喜欢
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 2019-06-03
    相关资源
    最近更新 更多