0

8 列 (A、B、C、D、E、F、G) のテーブルを含む GUI を開発しています。

データベースには 2 つのテーブルがあります。Table1 には (A、B、C、D、E+) が含まれ、Table2 には (E、F、G) が含まれます。ここで E+ は Table1 への FK です。

ここで、準備されたステートメントを使用して挿入し、GUI テーブルに入力したいと考えています。私は次のように挿入クエリを書いています。Table1 の E+ FK は、Table2 の値を設定するためのものです。

insert into table1 (a,b,c,d,e,f,g) values (?,?,?,?,(select t2.E from t2 where t2.E=2)

ps.setString(1,a)
ps.setString(2,b)
ps.setString(3,b)
...

上記のクエリを使用すると、GUI テーブルだけでなく DB にも挿入できません。正しいクエを教えてください。

4

1 に答える 1

0

あなたの質問は非常に紛らわしいです:

私は8列(A、B、C、D、E、F、G)のテーブルを含むGUIを開発しています

これにより、8列ではなく7列になります。

データベースには2つのテーブルがあります。表1には(A、B、C、D、E +)が含まれ、表2には(E、F、G)が含まれます。ここで、E+はTable1に対するFKです。

Table1にそれ自体への外部キーが含まれているのはなぜですか?

表1に挿入(a、b、c、d、e、f、g)

表1にはe、f、gという名前の列がないため、これが機能することをどのように想像できますか?


まず、データベースのものとGUIのものを別々のクラスに分けます。2つの側面を混ぜ合わせてはいけません。

次に、SQLについて学びます。2つのテーブルに挿入する場合は、2つの挿入ステートメントが必要です。1つはtable1に挿入し、もう1つはtable2に挿入します。FKがtable2にある場合、最初の挿入はtable1の挿入である必要があります。これは、table2のFKがtable1に存在する行を参照する必要があるためです。

于 2012-10-28T07:43:43.723 に答える