c#
  • visual-studio-2013
  • oledbdatareader
  • 2015-04-27 21 views 0 likes 
    0

    上述例外的給定值是通過視覺工作室拋出當運行此代碼的編譯的結果:沒有用於一個或多個所需的參數C#

    requete = @"select v.[*] from Visite v, Infirmière i where v.[code_inf] = i.[code_inf]" /* + 
          " and i.[nom_inf]='" + nom + "'" + 
          " and i.[prenom_inf]='"+prenom+"'"+ 
          " and v.[date_visite]=to_date('" + d.ToString().Substring(0, 10)+"','DD/MM/YYYY')" */ 
          ; 
    MessageBox.Show(requete); 
    
    
    OleDbCommand dbc = new OleDbCommand(requete, connec); 
    
    OleDbDataReader dr = dbc.ExecuteReader(); 
    
    while(dr.Read()) 
    { 
        dgv_res.Rows.Add(dr.Read()); 
    } 
    

    dgv_res是一個DataGridView成分,connec是一個開放的連接。

    我評論了我的請求的一部分,看看是否存在SQL錯誤,但是我確實沒有看到第一行中出現了什麼問題,並且一直在獲取此異常。我已經多次查看了列和表名。

    沒有爲一個或多個必需的參數,我創建OleDbDataReader我覺得

    被拋出的給定值。

    感謝您的閱讀!

    +0

    分解它直到你發現你的問題。 'SELECT * FROM Visite'工作嗎? – nvoigt

    +1

    有時候,由於查詢中的語法錯誤,可能會引發此錯誤。您是否嘗試過在SQL工具中執行這條語句?是否引發任何錯誤,或者它是否正確執行? –

    +0

    或者向你的'OleDbCommand'添加一個參數值,看看它在哪裏替換完全:) –

    回答

    1

    AFAIK,您不能使用[]*和自OLE DB提供程序不關心命名的參數,它可以認爲[*]是一個參數,並期望它的參數值。

    如果一切都不是這樣的話,這應該工作;

    @"select v.* from Visite v, Infirmière i where v.[code_inf] = i.[code_inf]" 
    

    隨着[*],數據庫引擎會認爲你在v表中有一欄名稱調用*正是,並非所有列。

    +1

    我不認爲這可能是如此簡單,但它現在的作品!非常感謝 :) – JeanBonbeurre

    相關問題