...但直接在脚本中...
您想使用单独的脚本将数据插入数据库吗? (可能使用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();
}
}
它有效: