0

Drivers、Offenses、Points、Sofar という 3 つのテーブルがあり、3 つの SQL 文字列を使用してテーブルのデータを挿入および更新しています。

String command1 = "INSERT INTO Drivers (IDNumber, FirstName, LastName) VALUES" + drivID + FName + LName;
String command2 = "INSERT INTO Offences(IDNumber, SpeedLimit, DriverSpeed, SeatBelt, DrunkenDriving, DriversLicense) VALUES" + drivID + intspeed + intDSpeed + strSeat + strDrunk + strLicense;
String command3 = "INSERT INTO DriverPoints(IDNumber, Points) VALUES" + drivID + intpoints;

各テーブルは、主キー IDNumber を介して相互に接続されています

3 つの SQL コマンド/文字列を使用する代わりに、1 つしか使用できないが 3 つのテーブルすべてを挿入および更新できる方法はありますか?

4

3 に答える 3

1

を書きますStored Procedure

ただし、プラットフォームに依存しないようにするには、ANSI SQL構文を使用する必要があります。

BigMike のコメントに従って、ビューを作成することもできます。Thisビューの作成により多くの光を当てます。

于 2012-10-22T12:38:51.760 に答える
1

おおよそ、クエリは次のようになります。

SELECT d.IDNumber, d.FirstName, d.LastName, o.SpeedLimit, o.DriverSpeed, o.SeatBelt, o.DrunkenDriving, o.DriversLicense, p.Points 
  FROM Drivers d
JOIN Offences o on (d.IDNumber = o.IDNumber)
JOIN DriverPoints p on (d.IDNumber = p.IDNumber)
WHERE (...) -- Whathever where condition you like

これで全部読めます。

更新するには、3 つの個別の更新ステートメントを実行するか、ストアド プロシージャまたはビューを使用する必要がありますが、これは使用しているデータベースによって異なります。

編集:挿入には、PreparedStatementsを使用することをお勧めします

String command1 = "INSERT INTO Drivers (IDNumber, FirstName, LastName) VALUES (?, ?, ?)";
PreparedStatement ps = connection.prepareStatement(command1);
ps.setInteger(1, drivID );
ps.setString(2, FName );
ps.setString(3, LName );
ps.execute();
于 2012-10-22T12:44:39.620 に答える
0

1つのステートメントで複数のテーブルに挿入することはできないため、簡単な答えは「いいえ」です。3つのテーブルに挿入するには、3つのステートメントが必要です。

また、構文は次のようにする必要があります。
String command1 = "INSERT INTO Drivers (IDNumber, FirstName, LastName) VALUES (" + drivID + ", " + FName + ", " + LName + ")";

カンマと中括弧が追加されていることに注意してください。

また、それがあなたの言いたいことであれば、すべてのステートメントを1つのクエリに入れることができます。

于 2012-10-22T12:51:18.447 に答える