2015-01-12 4 views
0

Используемая платформа: Visual studio 2010 и SQL-сервер 2008 R2Исключено SqlException -> Неверный синтаксис рядом с ')'.

Я продолжаю получать исключение null, которое говорит «Неправильный синтаксис рядом»). в нижеописанной точке, то есть в части Reader. До этого исключение показало, что Reader уже открыт, потому что я использовал вложенный Reader и был разрешен с помощью «MultipleActiveResultSets = True» в строке подключения. Также добавлен фрагмент кода и журнал ошибок.

Может ли кто-нибудь помочь в разрешении этого?

SqlCommand cmdDetails8 = new SqlCommand("SELECT * FROM [sub].[szn_TimeCard_Week] WHERE  [szn_user_name] = @usrname AND [szn_start_date] = @strtdate) AND ([szn_thu] = 0)", conn); 
cmdDetails8.Parameters.AddWithValue("@usrname", tymT.UserName); 
cmdDetails8.Parameters.AddWithValue("@strtdate", strtDate); 

using (SqlDataReader reader1 = cmdDetails8.ExecuteReader()) // null exception point 
{ 
    if (reader1.HasRows) 
    { 
     SqlCommand cmdDetails9 = new SqlCommand("UPDATE [sub].[szn_TimeCard_Week] SET [szn_thu] =  
     @hrs WHERE [szn_user_name] = @usrname AND [szn_start_date] = 
     @strtdate;", conn); 
     cmdDetails9.Parameters.AddWithValue("@usrname", tymT.UserName); 
     cmdDetails9.Parameters.AddWithValue("@strtdate", strtDate); 
     cmdDetails9.Parameters.AddWithValue("@hrs", dayTotalHrs); 
    } 
    else 
    { 
     SqlCommand cmdDetails9 = new SqlCommand("INSERT INTO [sub].[szn_TimeCard_Week] 
     ([szn_user_name],[szn_start_date],[szn_thu]) VALUES (@usr_name,@strt_date,@hrs));", 
     conn); 
     cmdDetails9.Parameters.AddWithValue("@usr_name", tymT.UserName); 
     cmdDetails9.Parameters.AddWithValue("@strt_date", strtDate); 
     cmdDetails9.Parameters.AddWithValue("@hrs", dayTotalHrs); 
    } 
    reader1.Close(); 
} 

ответ

2

Ваша первая проблема, метко, на первой линии:

SELECT * FROM [sub].[szn_TimeCard_Week] 
WHERE [szn_user_name] = @usrname AND [szn_start_date] = @strtdate) 
                   ^

Вы не открывающую скобку означает, что закрывающая скобка вызывает дисбаланс во Вселенной.

Ваша вторая проблема находится на первой линии в вашем else блоке, который имеет избыточную закрывающую скобку:

INSERT INTO [sub].[szn_TimeCard_Week] 
    ([szn_user_name],[szn_start_date],[szn_thu]) 
VALUES 
    (@usr_name,@strt_date,@hrs)) 
          ^
+0

Большое вам спасибо :) – Jipsy

1

Первоначально, вы должны изменить этот

"SELECT * FROM [sub].[szn_TimeCard_Week] 
WHERE [szn_user_name] = @usrname AND [szn_start_date] = @strtdate) AND ([szn_thu] = 0)" 

этому

"SELECT * FROM [sub].[szn_TimeCard_Week] 
WHERE [szn_user_name] = @usrname AND [szn_start_date] = @strtdate AND ([szn_thu] = 0)" 

Дополнительная информация ) следующая до strtdate.

Кроме того, вы должны изменить и этот

VALUES (@usr_name,@strt_date,@hrs)) 

в

VALUES (@usr_name,@strt_date,@hrs) 

Вам не нужно там дополнительные ). Это синтаксическая ошибка.

+0

Огромное спасибо :) – Jipsy

+0

@Jipsy вы приветствуете чувак. Я рад, что помог! – Christos

0

В этом заявлении является последним ) многим:

"INSERT INTO [sub].[szn_TimeCard_Week] ([szn_user_name],[szn_start_date],[szn_thu]) VALUES (@usr_name,@strt_date,@hrs)); 
                                 ^
+0

Не единственная проблема, о которой говорили другие. –

+0

Огромное вам спасибо: – Jipsy

0

Первый запрос SQL имеет erros написать это:

SELECT * FROM [sub].[szn_TimeCard_Week] WHERE  [szn_user_name] = @usrname AND [szn_start_date] = @strtdate AND ([szn_thu] = 0); 

А в последней записи этого:

INSERT INTO [sub].[szn_TimeCard_Week] 
    ([szn_user_name],[szn_start_date],[szn_thu]) VALUES (@usr_name,@strt_date,@hrs); 
+0

Большое вам спасибо :) – Jipsy

0

Этот запрос в вашем коде имеет проблемы с скобками. После параметра даты начала есть один дополнительный индикатор закрытия. Вы должны исправить это, применив скобки в соответствии с вашими потребностями.

SELECT * FROM [sub].[szn_TimeCard_Week] WHERE  [szn_user_name] = @usrname AND [szn_start_date] = @strtdate) AND ([szn_thu] = 0) 
+0

Большое вам спасибо :) – Jipsy

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