c\#데이터베이스 에 있 는 모든 표 이름 을 가 져 오 는 방법

1.sqldmo SQLDMO 는 SQLServer 를 조작 하 는 이상 적 인 방식 입 니 다.만약 에 데이터베이스 가 SQLServer 라면 이런 방식 을 고려 할 수 있 습 니 다.C\#에서 SQLDMO 를 사용 하려 면 SQLDMO 의 인용 을 추가 한 다음 현재 파일 에서 using SQLDMO 를 사용 해 야 합 니 다.SQLDMO 를 사용 할 수 있 습 니 다.SQLDMO 의 대상 모델 은 SQLServer 의 도움 을 받 을 수 있 습 니 다.
 
private void GetTabels_DMO(string strServerName,string strUser,string strPWD,string strDatabase)
{
SQLDMO.SQLServer Server = new SQLDMO.SQLServerClass();
//
Server.Connect(strServerName,strUser,strPWD);
// ,
for(int i=0;i<Server.Databases.Count;i++)
{
//
if(Server.Databases.Item(i+1,"dbo").Name ==strDatabase)
{
//
SQLDMO._Database db= Server.Databases.Item(i+1,"dbo");
//
for(int j=0;j<db.Tables.Count;j++)
{
MessageBox.Show(db.Tables.Item(j+1,"dbo").Name);
}
}
}
}
2.adox adox 는 ado Extensions for DDL and Security 로 마이크로소프트 가 ADO 기술 에 대한 확장 으로 이 를 사용 하면 데이터 베 이 스 를 조작 할 수 있 는 구조 이다.이것 은 COM 구성 요소 로 앞으로 ADO.NET 에 ADOX 의 일부 기능 이 추 가 될 것 으로 예상 된다.만약 여러분 이 ADOX 의 일부 자 료 를 필요 로 한다 면,저 는 제공 할 수 있 습 니 다.다음 의 예 는 현재 데이터베이스 의 모든 표를 ADOX 로 얻 는 것 이다.
 
private void GetTables_ADOX()
{
//ADO
ADODB.ConnectionClass cn=new ADODB.ConnectionClass();
string ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=Test;Data Source=HBXP";
cn.Open(ConnectionString,"sa","",0);
// ADOX Catalog
CatalogClass cat=new CatalogClass();
cat.ActiveConnection=cn;
for(int i=0;i<cat.Tables.Count;i++)
{
MessageBox.Show(cat.Tables[i].Name);
}
}
주의:위의 코드 에서 cat.activeConnection 은 ADO.Net 의 Connection 이 아니 라 ADO 의 Connection 이 어야 합 니 다.3.ado.net 의 oledbconnection 은 c\#에서 우 리 는 먼저 ado.net 을 사용 하여 문 제 를 해결 하 는 것 을 고려 할 것 입 니 다.방법 이 없 으 면 adox 나 sqldmo 를 사용 하여 이 문 제 를 해결 하 는 것 을 고려 할 것 입 니 다.adox 와 sqldmo 도 이 문 제 를 해결 할 수 있 지만 그들 은 come 구성 요소 이기 때문에.net 에서 사용 하 는 것 과 비.net 플랫폼 에서 차이 가 있 고 순 조 롭 지 못 합 니 다.다음 예제 에 서 는 ado.net 의 oledbconnection 방법 getoledbschematable 으로 데이터 베 이 스 를 얻 는 구 조 를 보 여 줍 니 다.msdn 에서 이 방법 에 대한 설명 을 볼 수 있 습 니 다.Public DataTable GetOleDbSchemaTable(Guid schema,object[]restrictions);매개 변수 schema OleDbSchemaGuid 의 값 중 하나 로 되 돌아 갈 구조 표를 지정 합 니 다.restrictions 제한 값 의 Object 배열 입 니 다.이 값 들 은 제한 열의 순서에 따라 응용 된다.즉,첫 번 째 제한 치 는 첫 번 째 제한 열 에 적용 되 고 두 번 째 제한 치 는 두 번 째 제한 열 에 적용 되 며 이에 따라 유추 된다.요청 한 구조 정 보 를 포함 하 는 DataTable 값 을 되 돌려 줍 니 다.더 많은 정 보 는 MSDN 을 조회 할 수 있 습 니 다.다음은 예 시 를 어떻게 실현 하 는 지 알 수 있 습 니 다.
 
private void GetTables_ADONET()
{
// OleDbConnection
string mailto:strConnectionString=@%22Integrated Security=SSPI;Data Source=HBXP;Initial Catalog=Test;Provider=SQLOLEDB.1";
OleDbConnection cn=new OleDbConnection(strConnectionString);
cn.Open();
// OleDbConnection GetOleDbSchemaTable
DataTable dt = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[] {null, null, null, "TABLE"});
foreach (DataRow dr in dt.Rows)
{
MessageBox.Show((String)dr["TABLE_NAME"]);
}
}
4.정보 구조 보기 정보 구조 보 기 는 sql-92 기준 에서 정 의 된 구조 보기 로 이런 보 기 는 시스템 표 에 독립 되 어 있다.정보 구조 보기 의 가장 큰 장점 은 우리 가 시스템 표를 중요 하 게 수정 하 더 라 도 응용 프로그램 은 이 보 기 를 정상적으로 사용 하여 접근 할 수 있다 는 것 이다.아래 의 예 는 정보 구조 보 기 를 사용 하여 작업 합 니 다.
 
private void GetTables_INFORMATION_SCHEMA()
{
//
string strConnectionString=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
sqlcn=new SqlConnection(strConnectionString);
sqlcn.Open();
//
SqlCommand sqlcmd=new SqlCommand("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'",sqlcn);
SqlDataReader dr=sqlcmd.ExecuteReader();
while(dr.Read())
{
MessageBox.Show(dr.GetString(0));
}
}
5.시스템 표를 사용 합 니 다.만약 에 데이터베이스 시스템 이 sqlserver 라면 다음 과 같은 방식 으로 현재 데이터 뱅 크 의 모든 표를 얻 을 수 있 습 니 다.
 
private void GetTables_SystemTable()
{
//
string strConnectionString=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
sqlcn=new SqlConnection(strConnectionString);
sqlcn.Open();
//
SqlCommand sqlcmd=new SqlCommand("SELECT OBJECT_NAME (id) FROM sysobjects WHERE xtype = 'U' AND OBJECTPROPERTY (id, 'IsMSShipped') = 0",sqlcn);
SqlDataReader dr=sqlcmd.ExecuteReader();
while(dr.Read())
{
MessageBox.Show(dr.GetString(0));
}
}
6.sqlserver 를 사용 하 는 저장 과정'sptables'다음은'성 국군'친구 가 제시 한 저장 과정 을 사용 하 는 방법 에 대한 보충 코드 입 니 다.
 
public void GetTables_StoredProcedure()
{
// OleDbConnection
string mailto:strConnectionString=@%22Integrated Security=SSPI;Data Source=HBXP;Initial Catalog=Test;Provider=SQLOLEDB.1";
OleDbConnection cn=new OleDbConnection(strConnectionString);
cn.Open();
//
OleDbCommand cmd=new OleDbCommand("sp_tables",cn);
cmd.CommandType=CommandType.StoredProcedure;
OleDbDataReader dr=cmd.ExecuteReader();
while(dr.Read())
{
MessageBox.Show(dr["TABLE_NAME"].ToString());
}
}

좋은 웹페이지 즐겨찾기