首页 > 解决方案 > 使用代码 androidstudio 将值手动插入到 sqlite 表中

问题描述

我想向 SQLite android 中的表添加值。我在互联网上只能找到如何使用按钮添加值(通过创建用户界面来添加值)。但是我想用代码直接手动执行此操作,是否可能以及如何?谢谢。

下面是我正在处理的数据库!

PS:值是每列至少200字的文本

数据库助手.JAVA

  public class DatabaseHelper extends SQLiteOpenHelper{
        public static final String DATABASE_NAME="URTsqlite.db";
        public static final String TABLE_NAME="Anatomy";
        public static final String COL1="OrganName";
        public static final String COL2="Overview";
        public static final String COL3="Externalfeatures";
        public static final String COL4="Internalfeatures";
        public static final String COL5="role";

        public DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, 1);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL( " create table " +TABLE_NAME+"(OrganName PRIMARY KEY,Overview TEXT,Externalfeatures TEXT,Internalfeatures TEXT,role TEXT)");

        }

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

    }

    public boolean insertData (String OrganName ,String Overview ,String Externalfeatures ,String Internalfeatures,String role)
    {
        SQLiteDatabase db=this.getWritableDatabase();
        ContentValues contentValues=new ContentValues();
        contentValues.put(COL1,OrganName);
        contentValues.put(COL2,Overview);
        contentValues.put(COL3,Externalfeatures);
        contentValues.put(COL4,Internalfeatures);
        contentValues.put(COL5,role);
        long result=db.insert(TABLE_NAME,null,contentValues);
        if(result==-1)
            return false;
        else
            return true;

    }

}

标签: android-studioandroid-sqlite

解决方案


有可能吗?怎么做?

是的。您只需insertData使用要添加的值调用您的方法。

例如,假设您有一个Activity并且想要添加一行,那么您可以在 Activity 的onCreate方法中包含以下内容:-

公共类 MyActivity 扩展 AppCompatActivity {

DatabaseHelper myDB;

@Override

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.myactivity_main);
    myDB = new DatabaseHelper(this);
    myDB.insertData("hammond","overview blah","external features blah","internal features blah","makes music");
    ......... other code
}

因此,每次运行活动的 onCreate 方法时,都会尝试添加一行(但是,由于 OrganName 是隐式UNQIUE的,因为它是PRIMARY KEY,那么一旦添加它将不再被添加,冲突(重复)将被 SQLiteDatabaseinsert方法,从而允许处理继续)。

说通常预先存在的(外部创建的)数据库将作为资产提供,在安装应用程序后首次运行时复制它。


推荐阅读