[英]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.