将 SQLite INSERT 代码与 android 中的字符串一起使用

Use SQLite INSERT code with a string in android

我尝试将所有列表视图项的名称插入 sqlite 数据库,但我不知道该怎么做。我想这个循环可以帮助我,但在第 6 行遇到错误:

final SQLiteDatabase db = openOrCreateDatabase("LMDB", MODE_PRIVATE,null);
    db.execSQL("CREATE TABLE IF NOT EXISTS MyTable (id  INT primary key     autoincrement, onvan VARCHAR , ahamiyat INT, foriyat INT, olaviyat INT);");
    String temp ="";
    for(int i=0;i<myList.getAdapter().getCount();i++)
        {
            temp = MyListAdapter.getItemTitle(i);
            db.execSQL("INSERT INTO MyTable VALUES ('"+temp+"')");                  
        }
    db.close();

第二题:

当我从数据库中删除一行时 "id INT primary key autoincrement" 重新排列 ID? (例如 -1 其余 ID)

谢谢

更新

我想向我的 table.I 中插入一个字符串参数,之前使用此代码添加一个静态字符串作为字段名称:

db.execSQL("INSERT INTO MyTable VALUES ('Smith' , 'Max' , 22)"); 

当我使用上面的代码时 logcat 的错误是这样的:

02-04 10:15:01.181: E/AndroidRuntime(4161): at ir.clickteam.lifemanagement.AddActivity.onClick(AddActivity.java:109)
  • 关于 SQLite 数据库,请阅读相关教程,使用 ContentValues 插入新记录。
  • 第二,我不明白你在说什么。你怎么不说清楚点呢

在你的插入查询中使用这样的

 db.execSQL("INSERT INTO MyTable (your_column_name) VALUES ('"+temp+"')");   

你为什么不使用内容值,它更好

db.beginTransaction();
        try {
            ContentValues cv = new ContentValues();
            cv.put("columnName", value);
            cv.put("columnName", value);
            cv.put("columnName", value);
            cv.put("columnName", value);

            long id = db.insertOrThrow("table_name", null, cv);
            db.setTransactionSuccessful();
            db.endTransaction();

            return id;
        } catch (SQLiteConstraintException e) {
            return -1;
        }  

如果您遇到任何问题,请告诉我...

  1. 由于您的 table 的列多于 VALUES 的值,您需要明确指定要插入的列:

    db.execSQL("INSERT INTO MyTable(onvan) VALUES ('"+temp+"')"); 
    

    其中 onvan 是您要插入的列名称 temp

    为避免字符串中的撇号 ' 等问题,请考虑使用参数绑定:

    db.execSQL("INSERT INTO MyTable(onvan) VALUES (?)", new Object[] { temp }); 
    
  2. 标识符不会改变,除非您自己明确更新它们。