2012-07-12 96 views
1

我相信我的INSERT語句在這裏有些問題。當我運行我的代碼,錯誤消息顯示:INSERT語句中的錯誤消息

Line: 5
Error: Sys.WebForms.PageRequestManagerServerErrorException: Incorrect syntax near ','.

是什麼不對我的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); 
+9

您的INSERT語句有四列,您的SELECT語句只返回一列。這是你的陳述的主要問題。此外,您的WHERE子句格式不正確。您應該在條件之間使用AND或OR來代替逗號。 – Matt 2012-07-12 14:13:22

回答

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

然而,你將得到後一個新的異常,因爲你只能選擇一個列插入到這四個欄目:SelectedApptDate, SelectedApptStartTime, SelectedApptEndTime, SelectedWeddingPlanner。你必須指定其他三列,以及在SELECT聲明。

+0

怎麼所有的您可以通過定義3個選擇列是什麼意思?我已將我的逗號更改爲AND,並且給出了您許多人聲明的另一個錯誤。什麼其實我的想法是,我在我的數據庫,其中包括任命和AppointmentDetails的2個表。我的ApptID是我的AppointmentDetails表中的外鍵,如果我要將值插入到AppointmentDetails表中,我還需要將AppointmentDetails表中的ApptID映射到Appointment表中的ApptID。是對的嗎? – kelly 2012-07-12 14:38:07

+0

@kelly,而不是'... SELECT ApptID ...'它應該是'... SELECT apptID,anotherColumn,SecondColumn,ThirdColumn ...' – 2012-07-12 14:40:46

+0

ThankYou非常感謝您的幫助!我現在沒有任何錯誤,但我無法成功插入數據庫。 – kelly 2012-07-12 16:15:55

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

你只需要在你的SELECT語句中的一列,但在INSERT預計四列。模式是什麼樣的?

什麼領域是你想傳遞到您的INSERT從表中約會,這是爲了從變量來?

0

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