List<String> list_sub = new List<String> ();
int i = 0;
using(SqlConnection sqlConnection = new SqlConnection(connString)) {
SqlCommand sqlCmd = new SqlCommand("SELECT SUB FROM Reque WHERE FORMAT = '" + format + "' AND CLIENTE = '" + client + "' AND CRIT = 'Cal'", sqlConnection);
sqlConnection.Open();
SqlDataReader sqlReader = sqlCmd.ExecuteReader();
while (sqlReader.Read()) {
list_sub[i] = sqlReader["SUB"].ToString();
i = i + 1; //Count
}
sqlReader.Close();
sqlConnection.Close();
}
此代码抛出错误:
指数超出范围。必须是非负数且小于 集合。
我是用数组做的:
string[] list_sub = new string[20];
并且工作正常,但没有列表(我在这个任务中阅读列表更好......)
我认为列表与数组完全相同,我缺少什么?
更新:
使用SQL数据填充list_sub后,我想更改某些文本框的文本(这就是为什么我需要i,我需要知道导入了多少个值)
这是代码(使用list_sub数据填充txtbox):
int y = 0;
var textsarray = new TextBox[] {
txt_sub1, txt_sub2, txt_sub3, txt_sub4, txt_sub5, txt_sub6, txt_sub7,
txt_sub8, txt_sub9, txt_sub10, txt_sub11, txt_sub12, txt_sub13, txt_sub14, txt_sub15,
txt_sub16, txt_sub17, txt_sub18, txt_sub19, txt_sub20
};
foreach(TextBox txt in textsarray) {
txt.Text = list_sub[y];
y = y + 1;
}
答案 0 :(得分:4)
你的问题在这里:
list_sub[i] = sqlReader["SUB"].ToString();
您正在对List<t>
这样的预尺寸数组进行处理。您只需要执行此操作即可将项添加到数组中:
list_sub.Add(sqlReader["SUB"].ToString());
此外,看起来您甚至不再需要索引变量i
,除非您省略了一些代码。