1

私はこれまでVB6コードを変換していますC#が、変換はうまくいきますが、これまでの変換と混乱してRecordsetDatasetました。次のように、データセットを使用してレコードセットデータを変換して割り当てました

String strData = ds.Tables[0].Rows[0]["Col"].ToString(); 
//this is in VB6 code rs!Col

この変換は正しいですか?もしそうなら、次のようなレコードセットがあります

double d = rs(somestring).Value // before this a select query executed

これを使用してどのように変換できますかdataset

double d= double.Parse(ds.Tables[0].Rows[0]["someString"].ToString());

またrs.Fields(col)

それは正しいですか、それとも他のものですか?

4

2 に答える 2

0

ado.netのレコードセットに最も近いオブジェクトはリーダーです。Readerは、前方のみの読み取り専用カーソルを開き、レコードを読み取ることができます。レコードセットとデータセットには基本的な違いがあります。

データセットは、クエリされたデータのメモリ内の完全なコピーです。データセットにデータをフェッチすると、接続は必要ありませんが、レコードセットには接続が必要です。結果を前後に移動したくない場合は、リーダーを試してください。同様の構文を使用して、リーダーからデータをフェッチできます。

于 2013-03-16T09:34:14.573 に答える
0

次のようなことを試すことができます:-

ADODB.Connection oConn = new ADODB.Connection();
oConn.Open("Connection String", "", "", 0);
string strQuery = "";//Your select query or the query through which you are fetching data from database";
ADODB.Recordset rs = new ADODB.Recordset();
System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter();
DataTable dt = new DataTable();
rs.Open(strQuery, " Connection String,                ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, 1);
adapter.Fill(dt, rs);
return dt;
于 2013-03-16T09:30:42.663 に答える