2016-08-25 8 views
0

MySqlCommandを実行してからMySqlDataReaderで行を読み取った後、その行全体を1つの変数に格納することは可能ですか?MySQLデータベースからフェッチされた単一の行を変数にどのように格納しますか?

MySqlCommand cmd = new MySqlCommand(sql, conn); 
MySqlDataReader rdr = cmd.ExecuteReader(); 
while (rdr.Read()) 
{ 
    // Store a single row into a variable 
    // Pass the variable into another method 
} 
+0

'var str = rdr.GetString(0)' –

+0

@Rakitićこれは単に最初の列の値を保存しませんか?私は行全体を格納する方法を尋ねています – user2181948

+0

あなたが達成できる最も良いことは、[IDataRecordインターフェイス](https://msdn.microsoft.com/en-us/library/system.data)に関するMSDNドキュメントで説明されています。 idatareader(v = vs.110).aspx)ですが、最後に各列を読み込んでどこかに格納する必要があります。 – Steve

答えて

1

あなたが達成できる最善のことはIDataRecord interfaceについてのMSDNドキュメントで説明されていますが、最後に、あなたはまだ、それぞれ単一の列を読んで、どこかにそれらを格納する必要があります。 さらにオブジェクト指向のアプローチでは、レコードのデータを表すクラスを作成し、そのクラスのインスタンスを作成し、そのプロパティを初期化してからインスタンスを別のメソッドに渡します。

したがって、あなたがどこかに自分のクラスPersonに定義されている今、単純な

SELECT IDPerson, FirstName, LastName from Persons 

で使用

public class Person 
{ 
    public int IDPerson {get;set;} 
    public string FirstName {get;set;} 
    public string LastName {get;set;} 
} 

次に、あなたのループが

で動作します
MySqlCommand cmd = new MySqlCommand(sql, conn); 
MySqlDataReader rdr = cmd.ExecuteReader(); 
while (rdr.Read()) 
{ 
    // Declare and initialize the instance of a Person 
    // (this is a single variable as per your requirements) 
    Person p = new Person() 
    { 
     IDPerson = rdr.GetInt32(0), 
     FirstName = rdr.GetString(1), 
     LastName = rdr.GetString(2) 
    }; 
    ProcessPerson(p); 
} 
関連する問題