我必須從SQL Server中的數據庫中選擇用戶名。由SqlCommand
生成的查詢在SQL Server Management Studio中工作,但不在我的代碼中。C# - 選擇查詢在SqlCommand中不起作用
而這隻發生在輸入類似AFFAQPC/affaq
包含/
時。
的代碼是:當輸入包含/
發生
public int? getid()
{
SqlConnection Db = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
Db.Open();
// Searching for id in Users table from the logged in username
SqlCommand command = new SqlCommand("SELECT TOP 1 id FROM UsersLogin where username = '@user1';", Db);
command.Parameters.AddWithValue("@user1", userName);
string query = command.CommandText;
foreach (SqlParameter p in command.Parameters)
{
query = query.Replace(p.ParameterName, p.Value.ToString());
}
Trace.WriteLine(query);
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader.Read())
{
Trace.WriteLine("111");
int id = Convert.ToInt32(reader["id"]);
Trace.WriteLine(id);
Db.Close();
return id;
}
}
Db.Close();
return null;
}
該錯誤。
是在SqlCommand
生成查詢:
SELECT TOP 1 id
FROM UsersLogin
WHERE username = 'AFFAQPC\affaq';
您沒有正確處理您的[IDisposable](https://msdn.microsoft.com/en-us/library/system.idisposable(v = vs.110).aspx)對象(如'SqlConnection') 。 – mason
在C#字符串中,反斜槓是一個轉義字符。如果你用C#構建這個查詢,並且這是一個字符串文字,那麼你需要在字符串前面使用「@」來指定一個沒有轉義的文字字符串:where username = @'AFFAQPC \ affaq'; – pmbAustin
您沒有顯示'userName'變量來自哪裏。 – mason