2011-05-12 50 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