SQL Server 및 mysql 데이터베이스에서 테이블, 열을 가져 와서 코드 중복이 발생합니다.두 가지 다른 유형의 객체를 처리하기위한 코드 중복을 피하는 공통 함수
저는 연결 개체를 삭제하는 것과 함께 mysql과 sql 서버 연결 (열기 및 닫기)을 모두 처리하고자하는 일반적인 기능을 유지하려고합니다.
이 MySQL을의 테이블과 MS의 SQL 점점 내 공통 기능입니다 : 그래서
public List<Columns> GetColumns(string connectionString, string database, string table, string type)
{
if (type == 'mysql')
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
con.Open();
var list = conn.GetSchema("Columns", columnRestrictions).AsEnumerable()
.Select
(
col => new
{
//column details
}
).ToList();
conn.Close();
}
}
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
if (conn.State == ConnectionState.Open)
{
var list = conn.GetSchema("Columns", columnRestrictions).AsEnumerable()
.Select
(
col => new
{
//column details
}
).ToList();
conn.Close();
return list;
}
return null;
}
}
: 점점 열 경우 위의
public List<Tables> GetTables(string databaseName, string connectionString, string type)
{
var list = new List<Tables>();
if (type == 'mysql')
{
using (MySqlConnection con = new MySqlConnection(connectionString))
{
con.Open();
list = con.GetSchema("Tables").AsEnumerable()
.Select
(
t => new Tables
{
Name = t["TABLE_SCHEMA"].ToString() + "." + t[2].ToString()
}
).ToList();
con.Close();
}
}
else
{
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
list = con.GetSchema("Tables").AsEnumerable()
.Select
(
t => new Tables
{
Name = t["TABLE_SCHEMA"].ToString() + "." + t[2].ToString()
}
).ToList();
con.Close();
}
}
return list;
}
그래서 난 데 코드 중복과 동일 아무도 날 코드의 위의 중복을 피하고 연결 개체를 처분하는 것과 함께 열리고 닫는 1 개의 공통 함수를 유지하면서 테이블과 열을 가져 오는 동안 그것을 호출 할 수있는 방법을 안내 해줄 수 있습니까 ??
이제는 열을 가져 오는 기능이 있으므로이 경우에는 2 가지 방법이 필요하겠습니까 ?? –
업데이트 답변 ... – Michael
답변을 주셔서 대단히 감사하고 this.thanks처럼 도와주세요. :) –