【问题标题】:data insert in Android Studio在 Android Studio 中插入数据
【发布时间】:2021-11-28 01:13:36
【问题描述】:

我实际上正在研究 SQLite 数据库。我试图在我的数据库脚本中插入数据,以便稍后在 recyclerview 中显示它,而不是通过我在应用程序的前端输入它,而是直接在脚本中输入。我该怎么做? 这是我的代码以便更好地理解

package com.example.tacoskingapp3;

import android.content.ClipData;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;

public class ArticleManager extends SQLiteOpenHelper {

    public ArticleManager(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, "Article.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        String CreateTable = "CREATE TABLE articles (IdArticle INTEGER PRIMARY KEY  autoIncrement NOT NULL, NomArticle TEXT NOT NULL UNIQUE, TypeArticle TEXT NOT NULL, PrixArticle DECIMAL NOT NULL)";

        sqLiteDatabase.execSQL(CreateTable);
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVer, int newVer) {

    }

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    ...但直接在脚本中...

    您想使用单独的脚本将数据插入数据库吗? (可能使用ADB命令来执行脚本之类的)

    恐怕你做不到。 https://developer.android.com/training/data-storage/sqlite#DbHelper

    关于您的描述,有一个简单的演示:click a button to insert data to DB,我重用了您的代码。看起来是这样的:

    public class ArticleManager extends SQLiteOpenHelper {
    
        private static final int DATABASE_VERSION = 1;
        private static final String DATABASE_NAME = "Article.db";
        public static final String TABLE_NAME = "articles";
        public static final String KEY_ID_ARTICLE = "IdArticle";
        public static final String KEY_NOM_ARTICLE = "NomArticle";
        public static final String KEY_TYPE_ARTICLE = "TypeArticle";
        public static final String KEY_PRIX_ARTICLE = "PrixArticle";
    
        private static final String SQL_CREATE_TABLE =
                "CREATE TABLE " + TABLE_NAME + " (" +
                        KEY_ID_ARTICLE + " INTEGER PRIMARY KEY  autoIncrement NOT NULL, " +
                        KEY_NOM_ARTICLE + " TEXT NOT NULL UNIQUE ," +
                        KEY_TYPE_ARTICLE + " TEXT NOT NULL ," +
                        KEY_PRIX_ARTICLE + " DECIMAL NOT NULL)";
    
    
        public ArticleManager(@Nullable Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
    
        @Override
        public void onCreate(SQLiteDatabase sqLiteDatabase) {
            Log.d("ArticleManager", "TANCOLO===> SQL_CREATE_TABLE = " + SQL_CREATE_TABLE);
            sqLiteDatabase.execSQL(SQL_CREATE_TABLE);
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVer, int newVer) {
        }
    }
    
    public class ArticleEntity {
        String NomArticle;
        String TypeArticle;
        double PrixArticle;
    
        ArticleEntity(String NomArticle, String TypeArticle, double PrixArticle) {
            this.NomArticle = NomArticle;
            this.TypeArticle = TypeArticle;
            this.PrixArticle = PrixArticle;
        }
    }
    
    public class TestSqliteScript extends AppCompatActivity {
    
        private ArticleManager articleManager;
        private SQLiteDatabase db;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_test_sqlite_script);
    
            articleManager = new ArticleManager(this);
            db = articleManager.getWritableDatabase();
    
            findViewById(R.id.create_data_into_db).setOnClickListener( view ->
                    createDataIntoDB()
            );
        }
    
        private void createDataIntoDB() {
            //step 1, crate ArticleEntity list
            List<ArticleEntity> entities = new ArrayList();
            entities.add(new ArticleEntity("Nom article 01", "type 1", 100.0));
            entities.add(new ArticleEntity("Nom article 02", "type 2", 200.0));
            entities.add(new ArticleEntity("Nom article 03", "type 3", 300.0));
            entities.add(new ArticleEntity("Nom article 04", "type 4", 400.0));
    
            //step 2, insert the data to DB
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                entities.forEach(entity -> {
                    ContentValues values = new ContentValues();
                    values.put(KEY_NOM_ARTICLE, entity.NomArticle);
                    values.put(KEY_TYPE_ARTICLE, entity.TypeArticle);
                    values.put(KEY_PRIX_ARTICLE, entity.PrixArticle);
    
                    long newRowId = db.insert(TABLE_NAME, null, values);
                    Log.d("TestSqliteScript", "TANCOLO===> newRowId = " + newRowId );
                });
            }
        }
    
        @Override
        protected void onDestroy() {
            db.close();
    
            super.onDestroy();
        }
    }
    

    它有效:

    【讨论】:

      猜你喜欢
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 2022-08-16
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      相关资源
      最近更新 更多