2013-07-18 3 views
1

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

private string sqlQueryReturnString(Action<SqlConnection> sqlMethod) 
{ 
    string result = ""; 
    SqlConnection conn = new SqlConnection(); 
    conn.ConnectionString = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString; 
    try 
    { 
     //open SQL connection 
     conn.Open(); 
     result = sqlMethod(conn); 
    } 
    catch (Exception ex) 
    { 
     System.Diagnostics.Debug.Write(ex.ToString()); 
    } 
    finally 
    { 
     conn.Close(); 
    } 
    return result; 
} 

//Get the primary key of the currently logged in user 
private string getPKofUserLoggedIn(SqlConnection conn) 
{ 
    int result = 0; 
    SqlCommand getPKofUserLoggedIn = new SqlCommand("SELECT [PK_User] FROM [User] WHERE [LoginName] = @userIdParam", conn); 
    //create and assign parameters 
    getPKofUserLoggedIn.Parameters.AddWithValue("@userIdParam", User.Identity.Name); 
    //execute command and retrieve primary key from the above insert and assign to variable 
    result = (int)getPKofUserLoggedIn.ExecuteScalar(); 
    return result.ToString(); 
} 

Выше, как я думаю, к этому приближается. Это будет вызов:

string test = sqlQueryReturnString(getPKofUserLoggedIn); 

Эта часть не работает:

result = sqlMethod(conn); 

Оказывается sqlMethod считается недействительным.

Что мне нужно сделать, чтобы получить функциональность, которую я хочу?

+0

Какая функциональность вы хотите? Вы хотите, чтобы sqlMethod возвращал строку? Затем вы должны изменить его, чтобы вернуть строку – Krishna

ответ

5

Вы хотите получить Func<SqlConnection, string>. Action для методов void, Func для методов, которые что-то возвращают.

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