SQLite
データベースの複数のテーブルに新しいものがあり、複数のテーブルに値を挿入するためのベストプラクティスが何であるかを調べようとしています。私の主な質問は、別のContentValues
オブジェクトを作成して2番目のテーブルに値を挿入する必要があるかどうかです。私は実際にinsert()
を実行する方法を困惑しています。これまで私が試みてきたことがあります。ここでSqliteのAndroidアプリケーションで複数のテーブルにコンテンツ値を挿入する
は、ここでは、2つのテーブルとスキーマ
/* Creating a common attributes table here. */
private static final String CREATE_COMMON_ATTRIBUTES_TABLE = "create table "
+ COMMON_ATTRIBUTES_TABLE + "(" + DBColCons.UID_COMMON_ATTRIBUTES + " integer" +
" primary key autoincrement, " + DBColCons.GPS_POINT+ " integer not null, "
+ DBColCons.EXISTING_GRADE_GPS_POINT+ " integer not null, "
+ DBColCons.COVER+ " real not null, "+ DBColCons.NOTES+ " text, "
+ DBColCons.DATE+ " text)";
/* Creating a weld table here */
private static final String CREATE_WELD_TABLE = " create table " +WELD_TABLE+ "("
+ DBColCons.UID_WELD + " integer primary key, " + DBColCons.WELD_TYPE +
" text, " + DBColCons.WELD_ID + " text, " + DBColCons.DOWNSTREAM_JOINT +
" text, " + DBColCons.UPSTREAM_JOINT + " text, " + DBColCons.HEAT_AHEAD +
" text, " + DBColCons.LENGTH_AHEAD + " real, " + DBColCons.WALL_CHANGE +
" text, " + DBColCons.WELD_WALL_THICKNESS + " text, "
+ DBColCons.WELDER_INITIALS + " text, foreign key("+DBColCons.WELD_ID+") references" +
"("+DBColCons.GPS_POINT+"))";
ある私は、パラメータとして渡しています溶接クラスのためのいくつかのクラスgetters()
、とinsert()
に使用したいと思っています方法です。 DBColCons.GPS_POINT
、DBColCons.EXISTING_GRADE_GPS_POINT
、DBColCons.GPS_COVER
とDBColCons.NOTES
ため
public boolean insertWeld(Weld weld) {
/* Get a writable copy of the database */
SQLiteDatabase db = this.getWritableDatabase();
/* Content values to insert with Weld class setters */
ContentValues contentValuesWeld = new ContentValues();
try {
contentValuesWeld.put(DBColCons.GPS_POINT, weld.getGpsPoint());
contentValuesWeld.put(DBColCons.WELD_TYPE, weld.getWeldType());
contentValuesWeld.put(DBColCons.WELD_ID, weld.getWeldId());
contentValuesWeld.put(DBColCons.DOWNSTREAM_JOINT, weld.getDownstreamJoint());
contentValuesWeld.put(DBColCons.UPSTREAM_JOINT, weld.getUpstreamJoint());
contentValuesWeld.put(DBColCons.HEAT_AHEAD, weld.getHeatAhead());
contentValuesWeld.put(DBColCons.LENGTH_AHEAD, weld.getLengthAhead());
contentValuesWeld.put(DBColCons.EXISTING_GRADE_GPS_POINT, weld.getExistingGradePoint());
contentValuesWeld.put(DBColCons.COVER, weld.getCover());
contentValuesWeld.put(DBColCons.WALL_CHANGE, weld.getWallChange());
contentValuesWeld.put(DBColCons.WELD_WALL_THICKNESS, weld.getWeldWallThickness());
contentValuesWeld.put(DBColCons.WELDER_INITIALS, weld.getWelderInitials());
contentValuesWeld.put(DBColCons.NOTES, weld.getNotes());
/* adding the date in here to the row. */
contentValuesWeld.put(DBColCons.DATE, String.valueOf(mStrDate));
/* Inserting into the weld table */
db.insertWithOnConflict(WELD_TABLE, DBColCons.WELDER_INITIALS, contentValuesWeld,
SQLiteDatabase.CONFLICT_NONE);
return true;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
値が、私はCommon_Attributes_Tableに挿入したいものです。これは私が本当に混乱しているところです。これらの特定の値に対して個別のContentValues
オブジェクトを作成し、別のdb.insert()メソッドを使用してそれらを希望のテーブルに挿入する必要がありますか?WELD_TABLEの挿入で既に使用しています。
私はこの列車の難破船で迷子になってしまいました。 Ha。 ありがとうございます。
表示されるエラーは何ですか? – MuTiny
正確に同じレコードを複数のテーブルに挿入する予定ですか?もしそうなら、あなたはデータベースデザインを考え直すことができます。 –
@falsify。私はまだ何も実行していないのでエラーはありません。私はより多くのものを続けていく前に正しいものを得たいと思っています。申し訳ありませんが、より具体的にすべきでした。 @ Tim Biegeleisen。 – J2112O