我試圖在C#中創建一個Windows窗體應用程序,主要是爲了練習我在大學學到的東西。我的數據庫是一個Access數據庫,由三個表(SetIndex,SetSong [聯結表]和Song)組成。我們從來沒有學會如何在應用程序中使用數據庫,只是在網站上。我學到的大部分知識,都是通過反覆試驗來了解的。如何在C#中使用變量在Access數據庫中運行Select語句?
我有從SetIndex表日期的組合框列表,該值是所述ID(SetIndex的主鍵)。我需要能夠使用select語句來查詢數據庫,該語句說setindex.id = setsong.setid和setsong.songid = song.id和setIndex.id =變量,從下拉列表中選擇的值。我在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變量。 ID)。我測試了一下,通過使用標籤和按鈕來確保這部分工作正常,它似乎在檢索值,將其存儲在GlobalClass.ViewBySetDate中,並將其轉換爲我的int ID就好了。
但這是未來與錯誤「沒有爲一個或多個必需的參數給定值。」
有沒有更好的/工作方式做到這一點?或者,如果不是,我該如何解決這個錯誤?
謝謝你在前進,
曼迪
編輯:我改變了SELECT語句如下:
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仍是空白。在數據庫中查詢
謝謝你,是固定的誤差問題。這是在Access中使用的SQL語句,因爲它現在在我的代碼中顯示: 'SELECT song.Title FROM SetIndex INNER JOIN(song INNER JOIN SetSong ON song.ID = SetSong.SongID)ON SetIndex.ID = SetSong .SetID WHERE(((song.id)= setsong.songid)AND((設定song.setid)= setindex.id)AND((設定index.id)=)[]);' 我不出現錯誤,但datagridview仍然完全空白。 – user1325194 2012-04-10 22:26:59
該查詢是否返回任何行? – gbianchi 2012-04-10 22:40:27
它在Access中。 – user1325194 2012-04-10 22:46:15