2012-04-10 2 views
1

저는 C#으로 Windows Form 응용 프로그램을 만들려고합니다. 대부분 대학에서 배운 것을 실습하기 위해서입니다. 내 데이터베이스는 세 개의 테이블 (SetIndex, SetSong [접합 테이블] 및 Song)으로 구성된 Access 데이터베이스입니다. 우리는 애플리케이션에서 웹 사이트에서 데이터베이스를 사용하는 방법을 결코 배웠습니다. 제가 배운 대부분은 시행 착오를 통해 배웠습니다.변수가있는 Access 데이터베이스에서 C#으로 Select 문을 실행하려면 어떻게해야합니까?

나는 ID (SetIndex의 기본 키)가되는 값인 SetIndex 테이블의 날짜가있는 콤보 상자 목록을 가지고 있습니다. setindex.id = setsong.setid 및 setsong.songid = song.id 및 setIndex.id = 드롭 다운 목록에서 선택한 값인 select 문을 사용하여 데이터베이스를 쿼리 할 수 ​​있어야합니다. Access (setindex.id =?)를 사용하여 Access에서 select 문을 작성했지만 Access에서는 제대로 작동하지만 C#으로 수행하는 방법을 찾지 못했습니다. 매개 변수를 사용하는 방법과 여러 테이블을 쿼리하는 방법에 대한 답변을 찾았지만이 두 가지를 결합한 것은 없습니다.

코드 내에 이렇게 할 수있는 방법이 있습니까?

이것은 내가 시도한 마지막은 다음과 같습니다

using (OleDbConnection dataConnection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Mandy\Documents\Visual Studio 2010\Projects\SetManager1.3\SetManager1.3\SetManager.accdb")) 
{ 
    using (OleDbCommand dataCommand = dataConnection.CreateCommand()) 
    { 
     dataCommand.CommandText = "SELECT Title FROM Song WHERE Song.ID = SetSong.SongID AND SetIndex.ID=SetSong.SetID AND [email protected]"; 
     dataConnection.Open(); 
     dataCommand.Parameters.AddWithValue("@ID", ID); 
     DataTable table = new DataTable(); 
     OleDbDataAdapter adapter = new OleDbDataAdapter(); 
     adapter.SelectCommand = dataCommand; 
     adapter.Fill(table); 
     bindingSource1.DataSource = table; 
     dataGridView1.AutoResizeColums(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader); 
     dataGridView1.ReadOnly = true; 
     dataGridView1.DataSource = bindingSource1; 
    } 
} 

ID는 날짜 (선택 SetIndex의 값을 나열하는 콤보 상자에서 ID 값을 취하는 글로벌 클래스에서 제공하는 int 변수입니다. 신분증). 이 파트가 레이블과 버튼을 사용하여 작동하는지 확인하기 위해 테스트를 수행하여 값을 검색하고 GlobalClass.ViewBySetDate에 저장 한 다음이를 int int ID로 변환하는 것으로 보입니다.

하지만 "하나 이상의 필수 매개 변수에 값이 없습니다."라는 오류가 발생합니다.

더 좋은 방법이 있습니까? 그렇지 않은 경우 오류를 수정하려면 어떻게해야합니까?

맨디에게 사전에

편집을 감사하지 : 나는 다음에 선택 문을 변경 :

SELECT song.Title FROM SetIndex INNER JOIN (song INNER JOIN SetSong ON song.ID = SetSong.SongID) ON SetIndex.ID = SetSong.SetID WHERE ((set index.id) =[?]); 

오류가 더 이상이지만, DataGridView를 여전히 비어 있습니다. 데이터베이스에 쿼리

답변

2

테스트 .. 방법은 데이터베이스에 액세스 할 수 동일하지만 쿼리는

SELECT Title FROM Song WHERE Song.ID = SetSong.SongID AND SetIndex.ID=SetSong.SetID AND [email protected] 

SetSong이 쿼리 내에서 정의되지 않은 잘못된 것입니다.

+0

오류 메시지가 수정되었습니다. 이것은 Access에서 작동하는 SQL 문이며 이제는 코드에서 볼 수 있습니다. '노래 선택 SELECT. (set index.id) = [?]));) 나는 아니다. (나는 (set song.id) = setsong.songid) 오류가 발생하지만 datagridview는 여전히 완전히 비어 있습니다. – user1325194

+0

이 쿼리는 모든 행을 반환합니까? – gbianchi

+0

Access에 있습니다. – user1325194

0
grigview1.datasource = table; 

gridview1.databind(); 
+1

이 두 줄의 코드가 어떻게 OP 문제를 해결하는지 설명하는 것이 좋습니다. – ryadavilli

관련 문제