Безопасны ли не статические члены внутри общедоступного статического класса? - PullRequest
0 голосов
/ 01 октября 2011

Можете ли вы проверить эту функцию для меня.Это потокобезопасный или не будет использоваться.Я пытаюсь понять, как именно работают публичные статические классы.

Эта функция будет использоваться для получения userId посетителя из базы данных по имени пользователя.Так много одновременных звонков может произойти.Кроме того, это будет лучший способ производительности и безопасное внедрение SQL.

ASP.net 4.0 - C # - MSSQL 2008 R2 - IIS 7.5

using System;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data;

public static class csGetUserId
{
    public static string srCommandText = "select UserId from tblUsersProfile where userName=@userName";

    public static string ReturnUserId (string srUserName)
    {
        string srUserId = "0";

        using (SqlConnection connection = new SqlConnection(DbConnection.srConnectionString))
        {
            try
            {
                SqlCommand cmd = new SqlCommand(srCommandText, connection);
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.AddWithValue("@userName", srUserName);
                SqlDataReader dsReader = null;
                connection.Open();
                dsReader = cmd.ExecuteReader();
                if (dsReader.HasRows)
                {
                    while (dsReader.Read())
                    {
                        srUserId=dsReader["UserId"].ToString();
                    }
                }
                else
                {

                }
            }
            catch
            {
                srUserId="-1";
            }
        }
        return srUserId;
    }
}

1 Ответ

1 голос
/ 01 октября 2011

Если предположить, что база данных поддерживает несколько соединений и что вы изменили srCommandText, чтобы он был доступен только для чтения, тогда этот метод является поточно-ориентированным. Если сделать srCommandText доступным только для чтения, это также защитит его от SQL-инъекций.

...