簡體   English   中英

捕獲了SqlException->')'附近的語法不正確。

[英]SqlException was caught -> Incorrect syntax near ')'.

使用的平台:Visual Studio 2010和SQL Server 2008 R2

我不斷收到一個空異常,內容為“')'附近的語法不正確。” 在下面突出顯示的位置,即在閱讀器部分。 在此之前,該異常表示讀取器已經打開,因為我使用的是嵌套讀取器,並且已在連接字符串中使用“ 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();
}

您的第一個問題適當地在第一行:

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

您沒有圓括號,這意味着圓括號引起了Universe中的不平衡。

您的第二個問題在else塊的第一行上,該多余的右括號是:

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

最初,您應該更改此設置

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

您不需要多余的東西) 這是語法錯誤。

在此語句中,最后一個)是:

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

第一個sql查詢有錯誤說明:

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

您代碼中的此查詢在方括號中存在問題。 在開始日期參數之后還有一個附加的關閉欄。 您需要根據需要應用方括號來更正此問題。

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

暫無
暫無

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

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