2011-05-12 117 views
0

我想從VB6轉換爲C#的行,我很難做到這一點。從VB6 C#轉換 - 記錄集

VB6代碼:

txtFields(4).Text = rsGroup.Fields(0).Value + 1 

C#(我至今)

txtFields4.Text = (rsGroup.Fields[0].Value) +1); 

什麼是做這種正確的方法是什麼?

+2

中有什麼具體的例子難度? – Oded 2011-05-12 06:12:41

+0

您的C#示例最後有一個額外的括號。此外,你的VB代碼有一個文本字段數組,你正在訪問索引4的文本字段,而你的C#有一個名爲txtField4的文本字段。那是故意的嗎?我很好奇,對象rsGroup的C#類型是什麼? – enamrik 2011-05-12 06:18:30

+0

什麼類型是'價值'?你是否試圖給一個字符串添加一個整數,或者你是否添加了2個整數並將它們放入一個字符串屬性中? – 2011-05-12 06:24:08

回答

0

我不會使用RecordSet,而是使用DataSet。 您可以使用System.Data.SqlClient命名空間來訪問數據庫,然後您可以綁定來自DataSet的控件,使生活變得更加輕鬆,同時我也避免直接複製VB6中的代碼。在C#世界中有很多新事物,你永遠不會有選擇在VB6中使用的選擇。

+0

嗨,Robbie,我正在考慮使用數據集解決方案。我會研究它 - 我猜這裏真正的困難是我沒有C#知識....只有java - 我的經理要求我對舊的數據庫比較工具進行轉換。 – jdurman 2011-05-13 00:39:52

0
txtFields[4].Text = rsGroup.Fields[0].Value + 1; 
+0

嗨enamrik,rsGroup的C#類型是一個ADODB.Recordset。 – jdurman 2011-05-13 00:41:39

1

@jdurman,

使用DataSet是檢索數據的一個例子:

public DataSet GetDate(string SqlString) 
{ 
SqlConnection sqlConn = new SqlConnection("CONNECTION STRING GOES HERE"); 
DataSet ds = new DataSet(); 

SqlDataAdapter adapter = new SqlDataAdapter(SqlString, sqlConn); 
adapter.Fill(ds); 

return ds; 

} 

public void LoopThroughDataExample(DataSet ds) 
{ 
foreach(DataTable dt in ds) 
{ 
foreach(DataRow dr in dt) 
{ 
Console.WriteLine(String.Format("Value is: {0}", dr["DBColumnName"])); // Replace DBColumnName with the name of columns in the Database Table that you want to Extract. 
} 
} 

} 
+0

感謝您的幫助Robbie,太棒了!我對此有一個主要擔憂,我使用這個程序的數據庫不是主流的(SQL/MSAccess等),它是HABITAT(http://www.ponge.com/telechargements/habitat.pdf) - 我認爲我會盡可能地嘗試轉換,然後瞭解如何使用棲息地.dll來訪問數據庫。 – jdurman 2011-05-15 23:16:25