最佳解答者
如何動態的設定變數

問題
-
請教一下各位大大
我有個table有六個欄位
我想要用下面這樣的方式取得欄位相關屬性
Class1 c1 = new Class1();
DataTable dt = new DataTable();
dt = c1.rsm("select * from userdata");
MessageBox.Show(c1.col1); //取得第一個欄位值
萬一我的table欄位有100個 我該如何改寫下面這個class
class Class1
{
public string col1="";
public string col2="";
public string col3="";
public string col4="";
public string col5="";
public string col6="";
public DataTable rsm(string strsql)
{
DataTable smdt = new DataTable();
string strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\test.mdb;User Id=admin;Password=;";
OleDbConnection objconn = new OleDbConnection(strconn);
objconn.Open();
OleDbCommand objcmd = new OleDbCommand(strsql, objconn);
OleDbDataReader dr = objcmd.ExecuteReader();
smdt = dr.GetSchemaTable();
dr.Close();
objconn.Close();
col1 = smdt.Rows[0][0].ToString();
col2 = smdt.Rows[1][0].ToString();
col3 = smdt.Rows[2][0].ToString();
col4 = smdt.Rows[3][0].ToString();
col5 = smdt.Rows[4][0].ToString();
col6 = smdt.Rows[5][0].ToString();
return smdt;
}
public DataSet rds(string strsql)
{
DataSet returnds = new DataSet();
string strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\test.mdb;User Id=admin;Password=;";
OleDbConnection objconn = new OleDbConnection(strconn);
OleDbDataAdapter objadt = new OleDbDataAdapter(strsql, objconn);
objadt.Fill(returnds);
return returnds;
}
}
解答
-
將你的固定宣告的改用集合型態即可
譬如class Class1 { private List<string> _cols = new List<string>(); public List<string> Cols { get { return this._cols; } } ... } 程式就可以用 Class1 c1 = new Class1(); string col1 = c1.Cols[0]; string col2 = c1.Cols[1]; 如果是.Net Framework 1.0可以將泛型集合List改用ArrayList取代.
- 已標示為解答 真是有點難 2009年2月25日 上午 02:02
所有回覆
-
將你的固定宣告的改用集合型態即可
譬如class Class1 { private List<string> _cols = new List<string>(); public List<string> Cols { get { return this._cols; } } ... } 程式就可以用 Class1 c1 = new Class1(); string col1 = c1.Cols[0]; string col2 = c1.Cols[1]; 如果是.Net Framework 1.0可以將泛型集合List改用ArrayList取代.
- 已標示為解答 真是有點難 2009年2月25日 上午 02:02
-
感謝大大 使用arraylist就可以用了
class Class2
{
public ArrayList ar = new ArrayList();
public DataTable rsm(string strsql)
{
DataTable smdt = new DataTable();
string strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\test.mdb;User Id=admin;Password=;";
OleDbConnection objconn = new OleDbConnection(strconn);
objconn.Open();
OleDbCommand objcmd = new OleDbCommand(strsql, objconn);
OleDbDataReader dr = objcmd.ExecuteReader();
smdt = dr.GetSchemaTable();
dr.Close();
objconn.Close();
for (int i = 0; i < smdt.Rows.Count; i++)
{
ar.Add(smdt.Rows[i][0].ToString());
}
return smdt;
}
} -
DataTable dt 應該有包含欄位資訊
Columns 取得屬於這個資料表的資料行集合
public string col1="";
public string col2="";
public string col3="";
public string col4="";
public string col5="";
public string col6="";
或 public ArrayList ar = new ArrayList();
應該無存在的意義.
foreach(DataColumn column in table.Columns)
{
Console.WriteLine(row[column]);
}