<asp:액세스데이터소스> ID="내소스이름" Runat="서버" 데이터파일="내MDB이름.mdb" SelectCommand="MyTable에서 MyField1, MyField2 선택"> </asp:액세스데이터소스> |
<html> <머리> <title>TIO ch02-1 MDB 데이터 표시</title> <머리> <본문> <h3>ch02 TIO 2 MDB 소스 연결 시연 </h3> <본문> </html> |
<%@ 페이지 언어="VB" %> <html> <head><title>ch02 TIO 2 MDB 데이터 표시</title></head> <본문> <h3>ch02 TIO 2 MDB 소스 연결 시연 </h3> <runat="서버" 형식> <asp:accessdatasource id="NorthwindProductsAccDataSource" runat="서버" selectcommand="제품에서 * 선택" 데이터파일="~/App_Data/Northwind.mdb"> </asp:액세스데이터소스> <asp:gridview id="NorthwindProductsGridView" runat="서버" datasourceid="NorthwindProductsAccDataSource"> </asp:그리드뷰> </form></body></html> |
<asp:accessdatasource id="NorthwindProductsAccDataSource" runat="서버" selectcommand="* [항목별 매출]에서 선택" 데이터파일="~/App_Data/Northwind.mdb"> </asp:액세스데이터소스> |
(14) 브라우저를 열고 페이지를 봅니다.
예제 참고 #2 - MDB에 연결하고 GridView로 데이터 표시
페이지에는 두 개의 컨트롤이 있습니다. 첫 번째인 AccessDataSource는 MDB 파일과 상호 작용하는 JET 엔진에 연결되는 ADO.NET 개체에 연결하는 모든 작업을 수행합니다. 두 번째는 데이터를 가져와 해당 형식을 페이지에 표시할 수 있는 HTML 형식으로 변환하는 데 사용되는 GridView입니다. 각 컨트롤에 의미 있는 이름(ID)을 지정하는 것이 매우 중요합니다. 그런 다음 AccessDataSource를 데이터 소스로 사용하려면 데이터 바인딩된 컨트롤(GridView)이 DataSourceID 속성을 사용하여 AccessDataSource의 ID를 참조하는지 확인해야 합니다.
쿼리에서 데이터를 표시하는 것은 그리 어렵지 않습니다. Access에서는 테이블 이름 대신 쿼리 이름을 사용할 수 있습니다. 여기에는 두 가지 지침이 있습니다. 먼저, 테이블이나 쿼리 이름에 공백이 있는 경우 전체 이름을 대괄호로 묶어야 합니다. 둘째, 사용자 입력이 필요한 쿼리(예: "특정 연도의 매출"은 어느 연도를 알아야 함)에는 이 책의 범위를 벗어나는 기술이 포함됩니다.
이전 단계를 완료한 후 페이지에 표시된 AccessDataSource 컨트롤에서 얻은 데이터를 볼 수 있습니다. 이후 장에서는 GridView를 자세히 다루겠지만 이 장에서는 계속해서 데이터 소스 컨트롤에 중점을 둘 것입니다.
명령문에서 변수 선택
VWD에서 데이터 소스를 생성할 때 마법사는 표시해야 할 열을 지정하거나 사용자 지정 SQL 문을 생성하라는 메시지를 표시합니다. 이전 "사용해 보기"에서는 단순히 몇 개의 열을 선택했습니다. 더 복잡한 SQL 문은 여러 가지 방법으로 지정할 수 있습니다.
● 대화형 대화상자 사용
● AccessDataSource 마법사에서 사용자 정의된 SQL 문을 입력합니다(컨트롤의 데이터 소스 구성 편의 작업에 의해 호출됨).
● 속성 그리드에 문을 입력합니다.
● 소스 보기의 마크업에 직접 문장을 입력하세요.
Access DataSource 마법사에서 열을 선택하는 것은 인쇄 및 구문 오류를 줄이기 때문에 별도의 테이블에서 하나 이상의 열을 반환하는 간단한 쿼리에 선호되는 기술입니다(그림 2-3 참조). 이 마법사의 이름 드롭다운 목록에서 테이블 또는 쿼리의 이름을 선택할 수 있습니다. 그런 다음 모든 열(*) 또는 임의의 열 그룹을 선택하여 테이블이나 쿼리에서 필요한 열을 선택할 수 있습니다. 정렬 기준 버튼을 클릭하면 데이터 소스의 모든 열을 기준으로 정렬할 수 있습니다. 첫 번째 열에 제약 조건이 있는 경우 Then By에서 선택한 필드가 사용됩니다. 마법사에서 옵션을 선택하면 SelectCommand의 실제 SQL 구문도 읽기 전용 텍스트 상자에 표시됩니다.
그림 2-3
마법사의 WHERE 버튼을 사용하여 매개변수가 포함된 SQL 문을 생성할 수 있습니다. 이 부분은 9장에서 소개합니다. 지금은 이 선택을 건너뛰겠지만 배포하기 전에 이 책의 뒷부분에서 설명할 이러한 매개 변수를 사용하는 것이 중요합니다. 배포된 사이트에서는 사용자 입력을 SQL 문에 직접 연결하지 마십시오. 매개변수 문제를 무시하면 사이트가 SQL 삽입 공격에 노출됩니다. 이 공격 기술은 사용자 입력의 잘못된 문자를 사용하여 원래 SQL 문을 무효화한 다음 이를 파괴적인 문으로 대체합니다. 매개 변수 컬렉션을 사용하면 사용자 입력을 ADO.NET 매개 변수 컬렉션으로 보낼 수 있습니다. 그러면 컬렉션 기능을 사용하여 SQL 삽입 문제를 줄일 수 있습니다.
데이터 소스 구성 마법사에는 SQL 문을 빠르게 생성하는 데 도움이 되는 많은 옵션이 있지만 표시된 SelectCommand에서 SQL 문을 직접 입력(또는 수정)해야 하는 경우도 있습니다. AccessDataSource 마법사는 이러한 작업을 허용합니다. 테이블, 쿼리 및 열을 선택하는 마법사 페이지에서 "사용자 지정 SQL 문 또는 저장 프로시저 지정" 라디오 버튼을 선택할 수 있습니다. 마법사 페이지에서 이 옵션을 선택한 후 다음 버튼을 클릭하면 텍스트 영역에 사용자 정의 문을 직접 입력할 수 있는 다른 페이지로 이동합니다. 또한 Visual Studio QueryBuilder를 사용하면 Access QueryBuilder와 매우 유사한 도구를 사용하여 사용자 지정 문을 시각적으로 만들 수 있습니다.
마법사를 사용하지 않으려면 AccessDataSource 컨트롤의 속성 표에 사용자 지정 SQL 문을 입력하도록 선택하거나 소스 보기로 전환하여 AccessDataSource 컨트롤 태그의 SelectCommand 속성에 문을 입력할 수 있습니다.
SQL에 관한 책은 많이 있는데(이 책과 같은 형식은 Beginning SQL 프로그래밍 , ISBN 1-861001-80-0), 이 책은 부록에 간략하게 소개되어 있다. SQL 구문을 배우려는 경우 레코드의 일부를 반환하는 명령(TOP 및 DISTINCT), 필드 이름을 바꾸는 구문(AS) 및 두 개의 관련 테이블에서 필드를 반환하는 기술(JOIN)을 학습하는 것부터 시작할 수 있습니다. . 다음 연습에서는 SQL 문의 일부 변수를 살펴봅니다.
시도 #3 - AccessDataSource에서 Select 문 변경 이 연습에서는 Northwind Products 테이블의 특정 열과 특정 레코드를 표시합니다. 쿼리에서 얻은 데이터를 표시하는 페이지도 생성됩니다. 이 연습에서는 선택 규칙이 이미 소스 코드에 있다는 점에 유의하십시오. 현재는 옵션으로 사용자 입력이 없습니다.
(1) C:WebsitesBegAspNet2Dbch02에 ch02_TIO_3_AlternateSelect-Commands.aspx라는 파일을 생성합니다.
(2) Northwind를 ID로 사용하여 AccessDataSource 컨트롤을 추가하고 MDB를 App_DataNorthwind.mdb로 설정합니다. 일련의 대화 상자에서 Select 명령을 설정하여 Products 테이블("name"=Products)에서 모든 필드를 검색합니다. 소스 보기를 살펴보고 아래와 같이 생성한 명령문을 확인하세요.
제품에서 * 선택 |
<%@ 페이지 언어="VB" %> <html> <헤드 runat="서버"> <title>ch02 TIO 3 대체 선택 코니만드</title> </머리> <본문> <h3>ch02 TIO 3 대체 선택 코인맨드</h3> <runat="서버" 형식> <asp:accessdatasource id="NorthwindAccDataSource" runat="서버" selectcommand="선택 * 제품에서" 데이터파일=" ~/App_Data/Northwind.mdb" > </asp:액세스데이터소스> <asp:gridview id="GridViewl" runat="서버" datasourceid="NorthwindAccDataSource"> </asp:그리드뷰> </양식> </본문> </html> |
SELECT * FROM [제품] WHERE (CategroyID=3) |
<asp:accessdatasource id="NorthwindAccDataSource" runat="서버" selectcommand="SELECT * FROM [제품] WHERE (CategoryID = 3) " 데이터파일="~App_Data/Northwind.mdb"> </asp:액세스데이터소스> |
SELECT * FROM 제품 WHERE ProductID = 12 SELECT * FROM Products WHERE ProductName = 'Northwoods 크랜베리 소스' * ProductID <11인 제품에서 선택 SELECT * FROM Products WHERE ProductID <11 ORDER BY ProductName 오름차순 SELECT * 공급업체 ID = 6 OR 공급업체 ID = 8인 제품에서 * 공급업체 ID = 24 AND 단가 ≥ 10인 제품에서 선택 |
MDB 파일 위치의 변수
MDB 파일은 하드 디스크의 다양한 물리적 위치(웹 페이지와 동일한 폴더, 웹 페이지 아래의 하위 폴더 또는 컴퓨터의 다른 폴더 등)에 저장됩니다. Visual Web Developer에서는 이러한 파일을 디자이너에서 자주 찾아볼 수 있으며 MDB 파일에 대한 올바른 경로가 입력되었습니다. 그러나 자신만의 코드를 입력하려면 이 섹션에 설명된 구문을 따라야 합니다.
AccessDataSource 컨트롤의 DataFile 속성에는 정규화된 페이지 경로(예: 드라이브 문자로 시작) 또는 AccessDataSource가 포함된 페이지 위치를 기준으로 지정될 수 있는 페이지 경로가 포함되어 있습니다. 경로는 애플리케이션에 상대적일 수도 있습니다. 즉, URL 구문을 사용하여 경로를 참조할 수 있습니다. 이 구문은 기호(~)를 응용 프로그램 루트 디렉터리(예: ~App_Dataproduces.mdb)로 바꿉니다. 애플리케이션 상대 경로를 사용하면 데이터베이스에 대한 참조를 중단하지 않고 한 위치에서 다른 위치로 페이지를 더 쉽게 이동할 수 있으므로 가능하면 애플리케이션 상대 경로를 사용하는 것이 좋습니다.
먼저 파일이 있는 컴퓨터 드라이브의 루트부터 시작하여 MDB 파일에 대한 전체 경로를 포함하는 정규화된 경로의 구문을 살펴보겠습니다.
<asp:액세스데이터소스 . 데이터 파일 = "C:WebSitesWebApplicationApp_DataMyMdb.mdb"> |
<asp:액세스데이터소스 . |
<asp:액세스데이터소스 . |
<asp:액세스데이터소스 . |
<asp:액세스데이터소스 . |