2010-12-15 2 views
0

Я обновляю свою БД через Datagridview. Вот мой Update_Button код:Неправильный синтаксис рядом с 'WHERE'

public void SaveDataSet(DataTable table) 
{ 

    foreach (DataRow row in table.Rows) 
    { 

    SqlCommand cmd2 = new SqlCommand(
     @"update dbo.JobStatus 
     SET ShipTransmitStatus = @TransmitStatus, 
      ShipTrackingNumber = @TrackingNum, 
      Carrier = @Carrier, 
      ShipmentProcessedBy = @ProcessedBy, 
      ShipMethodTransmitted = @MethodTransmitted, 
     WHERE JobTableId = @JobID ", _mySqlConnec); 

    //Updated the parameters to the SQL Query! 
    cmd2.Parameters.Add(new SqlParameter("@TransmitStatus", row["Status"].ToString())); 
    cmd2.Parameters.Add(new SqlParameter("@TrackingNum", row["Tracking#"].ToString())); 
    cmd2.Parameters.Add(new SqlParameter("@Carrier", row["Carrier"])); 
    cmd2.Parameters.Add(new SqlParameter("@ProcessedBy", row["ProcessedBy"].ToString())); 
    cmd2.Parameters.Add(new SqlParameter("@MethodTransmitted", row["MethodTransmitted"].ToString())); 
    cmd2.Parameters.Add(new SqlParameter("@JobID", row["JobID"].ToString())); 

    cmd2.Connection = _mySqlConnec; 
    _mySqlConnec.Open(); 
    cmd2.ExecuteNonQuery(); 
    _mySqlConnec.Close(); 
    } 


} 

И это мой ЗЕЬЕСТ:

SELECT dbo.InvoiceLineDetail.JobNumber as Job#,dbo.InvoiceLineDetail.PatientName, 
     dbo.InvoiceLineDetail.CustomerAccountName as Name, COALESCE(InvoiceLineDetail.ShipAddressAddr2 + ' ','') + COALESCE(InvoiceLineDetail.ShipAddressAddr3+' ','') as Address, 
     dbo.InvoiceLineDetail.ShipAddressCity as City, dbo.InvoiceLineDetail.ShipAddressState as State, 
     dbo.InvoiceLineDetail.ShipAddressPostalCode as ZipCode, dbo.InvoiceLineDetail.ShipAddressCountry as Country , dbo.JobStatus.ShipTransmitStatus as Status, dbo.JobStatus.ShipTrackingNumber as Tracking#, dbo.JobStatus.Carrier, dbo.JobStatus.ShipMethodTransmitted as MethodTransmitted, 
     dbo.JobStatus.DateShipTransmitProcessed as DateProcessed, dbo.JobStatus.ShipmentProcessedBy as ProcessedBy, dbo.JobStatus.Critical, dbo.JobStatus.JobTableId as JobID, dbo.JobStatus.InvoiceStatus, 
     dbo.InvoiceLineDetail.Quantity, dbo.InvoiceLineDetail.ChargeGroup 
     FROM dbo.InvoiceLineDetail INNER JOIN 
     dbo.View_JobsToShipCount ON dbo.InvoiceLineDetail.CustomerAccountName = dbo.View_JobsToShipCount.CompanyName INNER JOIN 
     dbo.JobStatus ON dbo.InvoiceLineDetail.JobID = dbo.JobStatus.JobTableId 
     WHERE (dbo.InvoiceLineDetail.ChargeGroup = N'Lens') 

Я получаю сообщение об ошибке: Неправильный синтаксис около 'WHERE'. Не могли бы выяснить проблему :(

ответ

8

Убрать последнюю запятую из:

ShipMethodTransmitted = @MethodTransmitted, 

т.е. изменить его на:

ShipMethodTransmitted = @MethodTransmitted 

В качестве общего ответа на эти виды ошибок:

  1. Оглянитесь около ключевого слова, предложенного в сообщении об ошибке.
  2. Если ваш Сообщение ror дало вам строку, на которой ошибка выглядит. line

Именно это я и сделал сейчас. Я посмотрел на ГДЕ и увидел дополнительную запятую.

3
ShipMethodTransmitted = @MethodTransmitted, 

удалить запятую после @Method ...

?

3

В функции SaveDataSet команда SQL содержит одну дополнительную запятую перед предложением WHERE.

Смежные вопросы