2016-04-05 6 views
0

Мне нужно отправить идентификатор зарегистрированного пользователя в несколько окон, но не может понять это. Как я могу вызвать переменную в нескольких формах?Объявить результат SQL как переменную

private void btnUpdate_Click(object sender, EventArgs e) 
using(var con = new SqlConnection("connectionstring")) 
{ 
var query = "SELECT TOP 1 ID FROM users WHERE username = @username AND password = @password"; 
// Build a command to execute your query 
using(var cmd = new SqlCommand(con,query)) 
{ 
     // Open connection 
     con.Open(); 
     // Add your parameters 
     cmd.Parameters.AddWithValue("@username", txtUsername.Text); 
     cmd.Parameters.AddWithValue("@password", txtPassword.Text); 

     // Get ID 
     var sqlid = Convert.ToInt32(cmd.ExecuteScalar()); 
} 
} 

Ive был поставлен в тупик в течение нескольких часов и не может продолжаться

+0

Переведите свой код на метод в отдельном классе. У этого метода есть два параметра для имени пользователя и пароля. Ваш метод должен возвращать 'sqlid'. Затем вы можете использовать метод в нескольких местах. – Habib

+0

Вы можете сделать переменную поле уровня класса - или еще лучше - свойство - вместо локальной переменной метода и установить его модификатор доступа, чтобы он был доступен другим классам (например, другим «формам»). –

ответ

0

Как я могу назвать переменную на множестве форм?

Извлеките код из события нажатия кнопки. Поместите его в класс в общей библиотеке, к которой можно получить доступ несколькими формами.

Вы также должны создать класс UserUserRepository), который вы передадите вместо простого идентификатора без контекста.

0

Это то, о чем говорил Стенли.

Пользователь структуры данных

public class MyUser 
{ 
    public int ID; 
    public string UserName; 
    public MyUser(int id, string userName) 
    { 
     ID = id; 
     UserName = userName; 
    } 
} 

База данных Интерфейс класса

public class UserContext 
{ 
    private ConnectionString = "" 

    // 1st constructor you pass in connection string. 
    public UserContext(string connectionString) 
    { 
     ConnectionString = connectionString; 
    } 

    // 2nd constructor you use the one in the web.config file. 
    public UserContext() 
    { 
     ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["connectionStringName"].ConnectionString; 
    } 

    public int GetUserID(string userName, string password) 
    { 
     // declare the result variable. 
     MyUser result 

     using(var con = new SqlConnection(ConnectionString)) 
     { 

      var query = "SELECT TOP 1 ID FROM users WHERE username = @username AND password = @password"; 
      // Build a command to execute your query 
      using(var cmd = new SqlCommand(con,query)) 
      { 
        // Open connection 
        con.Open(); 
        // Add your parameters 
        cmd.Parameters.AddWithValue(userName); 
        cmd.Parameters.AddWithValue(password); 

        // Get ID 
        var sqlid = Convert.ToInt32(cmd.ExecuteScalar()); 
        result = new MyUser(sqlid, userName); 

      } 
     } 
     return result; 
    } 
} 

Теперь все, что вам нужно сделать, это создать объект контекста базы данных и передать в свойствах.

private void btnUpdate_Click(object sender, EventArgs e) 
{ 
    // database context. 
    UserContext UC = new UserContext(); 

    // Get user. 
    MyUser currentUser = UC.GetUserID(txtUserName.Text, txtPassword.Text); 

    // now you can access userid from the User data-structure object. 
    var id = currentUser.ID; 
} 
Смежные вопросы