2012-03-04 58 views
0

我triyng製作一個程序,顯示用戶隨機英語單詞(取自一個訪問數據庫),並要求他寫這個詞的希伯來文defenition。 我設法使用excel VBA中的「cells(X,Y)」非常容易地進行編程...但是現在,當我在triyng中使用c#和access的時候,我有點迷路了。 我設法讓讀者工作 - 問題是 - 如何告訴它只讀取我項目中的特定行? I.E. - 它得到一個5的隨機數,然後顯示第5行的英文單詞的值,並且希望在第5行接收希伯來單詞作爲答案。如何使用訪問數據庫在c#中顯示行值?

這是我目前實現的:

 
    private void button1_Click(object sender, EventArgs e) 
      { 
      string conStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Words\WordsDatabase.accdb"; 
      string mySelect = "SELECT english,hebrew FROM study"; 
      OleDbConnection dbConnect = new OleDbConnection(); 
      dbConnect.ConnectionString = conStr; 
      dbConnect.Open(); 
      OleDbCommand dbCmd = new OleDbCommand(mySelect, dbConnect); 
      OleDbDataReader dbReader = dbCmd.ExecuteReader();

while (dbReader.Read()) { textBox1.Text += dbReader.GetValue(0).ToString() + "\r\n"; textBox2.Text += dbReader.GetValue(1).ToString() + "\r\n"; } }

非常感謝, 巴拉克。

回答

0

真的是SQL相關的問題。在mySelect更改爲:

SELECT TOP 1 english, hebrew FROM study ORDER BY NEWID() 
+0

非常感謝!這會好得多。現在的問題是如何在「order by」部分引用外部函數。 – 2012-03-05 11:38:10

+0

對不起,錯過了訪問位。在訪問中沒有什麼像NEWID(),所以你的選擇是使用Rnd和你的表的ID字段(希望autornumbred PK),如果你有它。你可以在下面使用Anastasiosyal的版本,或者直接進入'SELECT TOP 1英語,希伯來語FROM study ORDER BY Rnd(YOURSTUDYID)' – veblock 2012-03-05 22:16:49

+0

謝謝!它到了那裏。現在的問題是 - 如何通過我構建的某個函數來獲得順序,總體隨機順序 - 無法工作? – 2012-03-06 19:25:44

0

的MS接入等效查詢將是:

SELECT TOP X english, hebrew FROM study ORDER BY Rnd(-10000000*TimeValue(Now())*[id]) 

  • [ID]是數字(自動編號最有可能)的主鍵字段進行研究
  • X是您想要返回的行數。

Credit

+0

謝謝。有沒有辦法控制訂單?即使用提供一定數量的功能? – 2012-03-06 11:07:47

+0

通過控制訂單不確定你的意思。我編輯了響應,以便可以獲取X個隨機記錄,並且只是按照數據庫查詢響應的順序遍歷它們。英文欄將始終對應希伯萊欄 – Anastasiosyal 2012-03-06 12:49:11

+0

它應該顯示一個項目......這是很好的。我的意思是控制訂單 - 例如,我不希望訂單是100%隨機的,而是通過某個提供數字的函數 - 該數字將是所選行的ID。 (可以說我不希望它顯示相同的行兩次 - 我必須使用它的功能)。再次感謝。 – 2012-03-06 19:22:10