При выводе 2 таблиц SQL в DataGridView Логин и пароль дублируются
максим яковлев
Профи
(835),
на голосовании
6 месяцев назад
При выводе 2 таблиц SQL в DataGridView Логин и пароль дублируются и создается сразу 4 строки вместо 2, не могу понять в чём проблема internal class DB { MySqlConnection connection = new MySqlConnection("server=localhost;port=3306;username=st3996_27;password=pwd3996_27;database=db_3996_27_idz");
public void openConnection() { if(connection.State == System.Data.ConnectionState.Closed) connection.Open ();
} public void closeConnection() { if (connection.State == System.Data.ConnectionState.Open) connection.Close();
}
public MySqlConnection getConnection() { return connection; } }
ReadSingleRow(dgw,reader); } reader.Close(); private void TabUsr_Load(object sender, EventArgs e) { CreateColums(); RefreshDataGrid(dataGridView1); } } Создано 2 таблицы users и authorizations, при этом общее у них только id auth (я выбрал
Дополнен 7 месяцев назад
Причину нашел, как починить нет. Запрос select * from users,authorization; выводит в логине и пароле дубль данные, как это исправить?
Твой запрос возвращает картезианское произведение. Просто не делай так. Не занимайся шаманизмом, не называй это "выбор двух таблиц", а изучи основы теории множеств и реляционных баз данных на них основанных и подобные вопросы отпадут сами собой.
internal class DB
{
MySqlConnection connection = new MySqlConnection("server=localhost;port=3306;username=st3996_27;password=pwd3996_27;database=db_3996_27_idz");
public void openConnection() {
if(connection.State == System.Data.ConnectionState.Closed)
connection.Open ();
}
public void closeConnection()
{
if (connection.State == System.Data.ConnectionState.Open)
connection.Close();
}
public MySqlConnection getConnection() { return connection; }
}
DB db = new DB();
int selectedRow;
private DataSet dataSet = null;
private void CreateColums()
{
dataGridView1.Columns.Add("id","Код");
dataGridView1.Columns.Add("users.`id auth`", "Код аутентификатора");
dataGridView1.Columns.Add("id post", "Код должности");
dataGridView1.Columns.Add("contract num", "Номер договора");
dataGridView1.Columns.Add("phone num", "Номер телефона");
dataGridView1.Columns.Add("pasport id", "Паспортные данные");
dataGridView1.Columns.Add("emp name", "ФИО");
dataGridView1.Columns.Add("login", "Логин");
dataGridView1.Columns.Add("pass", "Пароль");
dataGridView1.Columns.Add("IsNew",String.Empty);
}
private void ReadSingleRow(DataGridView dgw,IDataRecord record)
{
dgw.Rows.Add(record.GetInt32(0), record.GetInt32(1), record.GetInt32(2), record.GetString(3), record.GetString(4), record.GetString(5), record.GetString(6), record.GetString(8), record.GetString(9),RoWState.ModifiedNew);
}
private void RefreshDataGrid(DataGridView dgw)
{
dgw.Rows.Clear();
string queryString = "select distinct * from users,authorization";
MySqlCommand cmd = new MySqlCommand(queryString, db.getConnection());
db.openConnection();
MySqlDataReader reader = cmd.ExecuteReader();
while ( reader.Read ())
{
ReadSingleRow(dgw,reader);
}
reader.Close();
private void TabUsr_Load(object sender, EventArgs e)
{
CreateColums();
RefreshDataGrid(dataGridView1);
}
}
Создано 2 таблицы users и authorizations, при этом общее у них только id auth (я выбрал