2012-01-10 3 views

답변

2

사용 OleDbConnection.GetOleDbSchemaTable 방법의 이름을 포함하는 모든 저장 프로 시저를 얻을 수 Procedures 테이블을 조회 할 수 있습니다. 이 콤보 상자, 목록 상자 및 하위 폼에 대한 액세스가 만든 시스템 쿼리를 포함

SELECT [Name] 
FROM [MSysObjects] 
WHERE [Type] = 5 

:

OleDbConnection connection = new OleDbConnection(@"connection_string"); 
connection.Open(); 
DataTable schemaTable = connection.GetOleDbSchemaTable(
     OleDbSchemaGuid.Tables, 
      new object[] { null, null, null, "VIEW" }); 
foreach (DataRow row in schemaTable.Rows) 
{ 
    Console.WriteLine(row["TABLE_NAME"]); 
} 
+1

이것은 선택 쿼리 만 반환하므로 작업 쿼리 (추가, 업데이트, 추가 등)에 OleDbSchemaGuid.Procedures (PROCEDURE_NAME)가 필요합니다. Ref : http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbschemaguid.procedures.aspx – Fionnuala

+0

DB에 선택된 저장된 쿼리 만 있지만이 작업을 수행해 주셔서 감사드립니다. – Pantelis

0

당신은

ProcedureName 필드는 절차

+0

액세스 97 '데이터베이스입니다 (예). 저장 프로 시저는 2000 년 이후에 제공되었습니다. 첫 번째 게시물에서 명확하게 보이지 않는 것에 대해 미안합니다. – Pantelis

0

는 또한 문서화되지 않은 있지만 많이 사용 MSysObjects 테이블을 사용할 수 있습니다. 모두 물결표로 시작하므로 다음과 같이 제외 할 수 있습니다.

SELECT [Name] 
FROM [MSysObjects] 
WHERE [Type] = 5 
    AND [Name] NOT LIKE "~*" 
+0

시스템 테이블에 대한 액세스가 허용되지 않는 (사용 권한) 경우가 종종 있습니다. 극단적 인 해결책을 찾기 란 지루합니다. – Fionnuala

관련 문제