簡體   English   中英

INSERT語句中的錯誤消息

[英]Error message in INSERT Statement

我相信這里的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);

使用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";

但是,此后您將得到一個新的例外,因為您只選擇了一個列插入到這四列中: SelectedApptDate, SelectedApptStartTime, SelectedApptEndTime, SelectedWeddingPlanner 您還必須在SELECT語句中指定其他三列。

您不要用,分隔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四列,而不只是一列。

SELECT語句中只有一列,但是INSERT希望有四列。 模式是什么樣的?

您想從表“約會”中將哪些字段傳遞到INSERT中?哪些字段應該來自變量?

您的WHERE子句應包含ANDOR

例如:

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列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM