Как отобразить данные в представлении таблицы данных пользователя, вошедшего в c # sql - PullRequest
0 голосов
/ 13 марта 2019

Привет У меня возникла проблема при попытке обновить мое представление таблицы данных, чтобы оно отображало только данные пользователя, вошедшего в систему.

У меня есть две таблицы: одна называется записями, а другая - пользователями. Таблица users содержит данные пользователя, включая имя пользователя и идентификатор пользователя. таблица записей содержит идентификатор пользователя в качестве внешнего ключа и данные о показаниях bmi.

У меня есть страница входа в систему, которая при входе отображает сообщение, которое приветствуется (имя пользователя)

Это код, который я написал для обновления таблицы данных

SqlConnection con = new SqlConnection(@(removed to simplify)); 

con.Open();

var sda = new SqlDataAdapter("SELECT * FROM Records WHERE UserID=@UserID", con);

sda.SelectCommand.Parameters.AddWithValue("@UserID", currentUsernameLabel.Text);

DataSet DATA = new dataGridView.DataSource = 

con.Close();

Как мне узнать, что такое userID (на основе имени пользователя, хранящегося в currentUsernameLabel.Text), чтобы я мог добавить его в качестве параметра?

EDIT: это мои таблицы:

Таблица рекордов

Records table


Таблица пользователей

Users table


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

EDIT:

Я предложил следующее решение:

//Find ID of user who is logged in
string currentUserID;
SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\n0740572\Projects\newest\CW\CW\Database1.mdf;Integrated Security=True");
SqlCommand command = new SqlCommand("select UserID from Users where Username = '"+currenUsernameLabel.Text+"' ", conn);
try
{
conn.Open();
SqlDataReader reader = command.ExecuteReader();
while(reader.Read())
{
currentUserID = reader["UserID"].ToString();
command.Parameters.AddWithValue("@CurrentUserID", currentUserID);
command.ExecuteNonQuery();
}
reader.Close();
} catch (SqlException ex)
{
MessageBox.Show(ex.Message);
} finally
{
conn.Close();
}

//update datagridview
this.recordsTableAdapter.ChartAll(this.recordsDataSet.Records);

}

Запрос ChartAll выглядит следующим образом:

SELECT Height, Weight, BMI, Date FROM dbo.Records
WHERE UserID = @CurrentUserID

Сообщение об ошибке: Сообщение об ошибке

Имеет ли это какое-то отношение к тому, что параметр должен быть целым, а не строкой?

1 Ответ

0 голосов
/ 13 марта 2019
            var table = new DataTable("myTable");
        using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString))
        {
            using (var da = new SqlDataAdapter())
            {
                da.SelectCommand = new SqlCommand("SELECT * FROM Records", con);
                da.Fill(ds, "Records");
            }
        }
        dataGridViewPerson.DataSource = table.DefaultView;

получите строку подключения из файла конфигурации, измените код, чтобы он соответствовал вашему коду, иначе вы не научитесь. иначе используйте и заполните DataTable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...