private void GridViewTable(MySqlConnection conn, string tablename) // 선택한 Table을 listview에 출력
{
try
{
int k;
int i;
string strqry = $"SELECT * FROM {tablename};";
int Colum_length = GetColumn_length(conn, tablename);
DataTable dataTable = new DataTable();
DataColumn dataColumn = new DataColumn();
dataTable.Clear();
dataGridView1.DataSource = null;
dataTable.Columns.Clear();
// 선택한 Table에 Column을 dataTable에 추가
for (k = 0; k < Colum_length; k++)
{
dataTable.Columns.Add(GetColumn_names(conn, tablename)[k]);
}
MySqlCommand cmd = new MySqlCommand(strqry, conn);
cmd.CommandType = CommandType.Text;
MySqlDataAdapter adapt = new MySqlDataAdapter(strqry, conn);
adapt.Fill(dataTable);
dataGridView1.DataSource = dataTable; // Gridview Datatable 바인딩
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), ex.Message);
}
}
Gridview에 DataTable 바인딩 코드
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Reflection;
using System.Windows.Forms;
namespace Hydro.TCP_GW
{
public partial class DB_Connector : Form
{
public DB_Connector(string[] args)
{
string[] args_;
args_ = args;
InitializeComponent();
}
public void DB_Connector_Load(object sender, EventArgs e)
{
}
public MySqlConnection Connect_info() // DB 연결 정보 및 DB연결 객체 반환
{
string Server_adress = Server_adress_text.Text;
string Port = Port_text.Text;
string DB = DB_text.Text;
string UID = UID_text.Text;
string PWD = PWD_text.Text;
string strConn = $"Server={Server_adress}; Port={Port}; Database={DB}; Uid={UID}; Pwd={PWD};";
MySqlConnection conn = new MySqlConnection(strConn);
return conn;
}
private void Connect_Click(object sender, EventArgs e)
{
MySqlConnection conn = Connect_info();
ConnectCheck(conn); // 연결 확인
Gettable(conn);
}
private void Select_table_Click(object sender, EventArgs e)
{
MySqlConnection conn = Connect_info();
conn.Open();
string Selected_table = "";
Selected_table = Table_list.SelectedItem.ToString();
GridViewTable(conn, Selected_table); // Combobox에서 선택한 테이블을 listview 출력
conn.Close();
}
private int GetColumn_length(MySqlConnection conn, string tablename) // 조회할 Table에 Column 총 개수를 반환
{
string column_list_strqry = $"SELECT COUNT(*) FROM information_schema.columns WHERE table_name='{tablename}';";
MySqlCommand colum_list = new MySqlCommand(column_list_strqry, conn);
colum_list.CommandType = CommandType.Text;
MySqlDataReader C = colum_list.ExecuteReader();
int colum_count = 0;
while (C.Read())
{
colum_count += C.GetInt32(0);
}
C.Close();
return colum_count;
}
private List<string> GetColumn_names(MySqlConnection conn, string tablename) // 조회할 Table에 Column 이름들을 List형으로 반환
{
string column_list_strqry = $"SELECT column_name from information_schema.columns WHERE table_name='{tablename}';";
MySqlCommand colum_list = new MySqlCommand(column_list_strqry, conn);
colum_list.CommandType = CommandType.Text;
MySqlDataReader C = colum_list.ExecuteReader();
List<string> column_names = new List<string>();
while (C.Read())
{
column_names.Add(C.GetString(0));
}
C.Close();
return column_names;
}
private void Gettable(MySqlConnection conn) // 접속한 DB에 Table 이름들을 Combobox에 추가
{
string table_list_strqry = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '';";
MySqlCommand table_names = new MySqlCommand(table_list_strqry, conn);
table_names.CommandType = CommandType.Text;
MySqlDataReader C = table_names.ExecuteReader();
List<string> table_list = new List<string>();
while (C.Read())
{
table_list.Add(C.GetString(0));
}
C.Close();
Table_list.Items.AddRange(table_list.ToArray());
}
private void GridViewTable(MySqlConnection conn, string tablename) // 선택한 Table을 listview에 출력
{
try
{
int k;
int i;
string strqry = $"SELECT * FROM {tablename};";
int Colum_length = GetColumn_length(conn, tablename);
DataTable dataTable = new DataTable();
DataColumn dataColumn = new DataColumn();
dataTable.Clear();
dataGridView1.DataSource = null;
dataTable.Columns.Clear();
// 선택한 Table에 Column을 dataTable에 추가
for (k = 0; k < Colum_length; k++)
{
dataTable.Columns.Add(GetColumn_names(conn, tablename)[k]);
}
MySqlCommand cmd = new MySqlCommand(strqry, conn);
cmd.CommandType = CommandType.Text;
MySqlDataAdapter adapt = new MySqlDataAdapter(strqry, conn);
adapt.Fill(dataTable);
dataGridView1.DataSource = dataTable; // Gridview Datatable 바인딩
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), ex.Message);
}
}
private void ConnectCheck(MySqlConnection conn) // 연결 확인
{
try
{
conn.Open();
MessageBox.Show("Database에 성공적으로 연결하였습니다.", "연결");
}
catch (Exception ex)
{
conn.Close();
MessageBox.Show(ex.ToString());
Application.OpenForms["DB_Connector"].Close();
}
}
}
}
전체 코드
'C# .Net' 카테고리의 다른 글
[C#] Selenium을 이용한 대신증권 기사 크롤링 (0) | 2021.02.15 |
---|