2012-04-11 39 views
1

複数の列を持つテーブルを持つMS Accessデータベースがあります。ボタンをクリックすると、データベースの1つの列から文字列データの行を取り出し、リッチテキストボックスに表示したいと考えています。データベースからテキストボックスにデータを表示する方法

myValue = (string)ds.Tables["TeamTable"].Rows[0][0]; 

:私は次の行でエラー「『可能System.String』を入力するタイプのオブジェクトをキャストすることができません 『可能System.Int32』」受信

public static string DisplayListOfTeams() 
    { 
     //create a data table object to hold data retrieved from DB 
     DataSet ds = new DataSet(); 

     //set SQL query to string variable 
     String sqlQuery = "SELECT * FROM Team"; 

     //instantiate new OleDbDataAdapter object 
     OleDbDataAdapter adpTeams = new OleDbDataAdapter(sqlQuery, aConnection); 

     //add data in DB to the dataset object/table 
     adpTeams.Fill(ds, "TeamTable");    

     string myValue; 

     if (ds.Tables["TeamTable"].Rows.Count > 0) 
     { 
      //You must cast the value because it is an object 
      myValue = (string)ds.Tables["TeamTable"].Rows[0][0]; 
     } 
     else 
     { 
      myValue = "No Data found"; 
     } 
     return myValue; 
    } 

richTextBox1.Text = TeamsDA.DisplayListOfTeams(); 

:私は、次のコードを作成しました私は何が間違っているのか、私がやろうとしていることをやり遂げる方法がわからない。代わりにToString

+1

'ds.Tables [" TeamTable "]の型。行[0] [0]'はint型なので、文字列にキャストできません。しかし、あなたは '.ToString()'を呼び出すことができます... – digEmAll

+0

ds.Tables ["TeamTable"]の値は何ですか?[0] [0]? – Prescott

+1

これは私のページでブロックされるようにmsaccessとしてタグ付けするのを忘れました。 –

答えて

3

ワン(2?)ワード(S?)。

キャストするとリターンは変換されませんが、タイプとして送信しようとします。 ToString()を使用すると、可能であれば正しい方法に変換されます。

私が間違っている場合は、私を修正してください。しかし、私はToString()がうまくいくと確信しています。

編集:

大文字と小文字を区別したエラーが修正されました。 digEmAllのおかげで

+0

列名id typeOfSportと行は、バスケットボール、野球、サッカー、サッカー、スイミング、ダイビングで構成されています。私がしようとしているのは、テキストボックスに行を表示することです。私は試みました:myValue = "ds.Tables [" TeamTable "]。ToString();" "TeamTable"と表示されます。 –

+1

ToStringは文字列を返すので、キャストする必要はありません。しかし、あなたのサンプルコードでは、ds.Tables ["TeamTable"]をキャストしていました。行[0] [0] 'ではなく、' ds.Tables ["TeamTable"] 'ではありません。だから 'ds.Tables [" TeamTable "]。[0] [0] .ToString()'を実行してみてください。 'ds.Tables [" TeamTable "]' .ToString()を呼び出すと、テーブル全体を単一の文字列に変換しようとしています。それはたくさんのことを意味するかもしれませんが、 'DataTable'クラスのプログラマーが選択した意味は、テーブルの名前を返すことでした。 – phoog

+0

@phoog - OK。だから私は完全に間違っていて、まったく別の方法でそれを実行する必要があります。 OK。私はもう少し研究をして、行をリストする方法を理解しようとします。ありがとうございます –

1

それをキャストしないでください...(ToStringメソッドを使用します):

+0

'ToString'(大文字T)、' toString'はjava;) – digEmAll

関連する問題