1

ここでのINSERTステートメントに何か問題があると思います。コードを実行すると、エラーメッセージに次のように表示されます。

行:5
エラー:Sys.WebForms.PageRequestManagerServerErrorException:'、'の近くの構文が正しくありません。

where句に何か問題がありますか?

これが私のINSERT声明です:

INSERT into AppointmentDetails (SelectedApptDate, SelectedApptStartTime, 
                                SelectedApptEndTime, SelectedWeddingPlanner) 
   SELECT 
       ApptID 
   from 
       Appointment 
   INNER JOIN 
       Appointment ON Appointment.ApptID = AppointmentDetails.ApptID 
   WHERE 
       SelectedApptDate = @SelectedApptDate, 
       SelectedApptStartTime = @SelectedApptStartTime, 
       SelectedApptEndTime = @SelectedApptEndTime, 
       SelectedWeddingPlanner = @SelectedWeddingPlanner

これは私がC#からそれを呼ぶ方法です:

    command.CommandText = "INSERT into AppointmentDetails (SelectedApptDate, SelectedApptStartTime, SelectedApptEndTime, SelectedWeddingPlanner) SELECT ApptID from Appointment INNER JOIN Appointment ON Appointment.ApptID = AppointmentDetails.ApptID WHERE SelectedApptDate = @SelectedApptDate, SelectedApptStartTime = @SelectedApptStartTime, SelectedApptEndTime = @SelectedApptEndTime, SelectedWeddingPlanner = @SelectedWeddingPlanner";

    command.Connection = connection;
    command.Parameters.AddWithValue("@SelectedApptDate", dateSelected);
    command.Parameters.AddWithValue("@SelectedApptStartTime", timeStart);
    command.Parameters.AddWithValue("@SelectedApptEndTime", timeEnd);
    command.Parameters.AddWithValue("@SelectedWeddingPlanner", weddingplanner);
4

4 に答える 4

5

句の条件を区切るためANDに代わりに使用します。あなたはそれをこのように書かなければなりません:,WHERE

INSERT into AppointmentDetails (SelectedApptDate, SelectedApptStartTime,
           SelectedApptEndTime, SelectedWeddingPlanner) 
SELECT ApptID 
from Appointment 
INNER JOIN Appointment ON Appointment.ApptID = AppointmentDetails.ApptID 
WHERE SelectedApptDate = @SelectedApptDate
   AND  SelectedApptStartTime = @SelectedApptStartTime
AND SelectedApptEndTime = @SelectedApptEndTime 
AND  SelectedWeddingPlanner = @SelectedWeddingPlanner";

ただし、次の4つの列に挿入する列を1つだけ選択するため、その後に新しい例外が発生しますSelectedApptDate, SelectedApptStartTime, SelectedApptEndTime, SelectedWeddingPlannerSELECTステートメントでは、他の3つの列も指定する必要があります。

于 2012-07-12T14:13:10.123 に答える
2

WHERE句を,;で区切ることはありません。意味ANDですか?

INSERT INTO
    AppointmentDetails (SelectedApptDate, SelectedApptStartTime, SelectedApptEndTime, SelectedWeddingPlanner)
    SELECT ApptID FROM Appointment INNER JOIN Appointment ON Appointment.ApptID = AppointmentDetails.ApptID
    WHERE SelectedApptDate = @SelectedApptDate
      AND SelectedApptStartTime = @SelectedApptStartTime
      AND SelectedApptEndTime = @SelectedApptEndTime
      AND SelectedWeddingPlanner = @SelectedWeddingPlanner

SELECTまた、1つだけでなく、4つの列も必要になります。

于 2012-07-12T14:12:45.073 に答える
1

SELECTステートメントには1つの列しかありませんが、INSERTでは4つの列が必要です。スキーマはどのように見えますか?

テーブルAppointmentからINSERTに渡そうとしているフィールドはどれですか?また、どのフィールドが変数からのものであると想定されていますか?

于 2012-07-12T14:17:10.330 に答える
0

句にはまたWHEREはが含まれている必要がありANDますOR

例えば:

command.CommandText = "INSERT into AppointmentDetails (SelectedApptDate,   
                                                       SelectedApptStartTime,  
                                                       SelectedApptEndTime,  
                                                       SelectedWeddingPlanner)

SELECT ApptID from Appointment 
INNER JOIN Appointment ON Appointment.ApptID = AppointmentDetails.ApptID
WHERE  SelectedApptDate = @SelectedApptDate 
AND SelectedApptStartTime = @SelectedApptStartTime
AND SelectedApptEndTime = @SelectedApptEndTime
AND SelectedWeddingPlanner = @SelectedWeddingPlanner";

また、INSERTステートメントには4つの列が含まれていますが、SELECTステートメントで返されるのは1つの列のみです。

于 2012-07-12T14:19:02.837 に答える