我有一个应用程序,它无法从数据库中获取此特定表单的数据,而其他表单工作正常。
我正在使用此表单从数据库中获取数据,然后将该数据显示在另一个表单上的标签上。
获取数据的代码是:
string PName, DName, Psex, PPhoneNo, PAddress, Treatment, Teethno, PAge, Amount;
SqlDataAdapter a = new SqlDataAdapter("Select bills.BillNo,bills.PName,bills.DName,bills.PAge,bills.PSex,bills.PPhoneNo,bills.PAddress,bills.Treatment,bills.Amount,bills.Teethno,addpro.Medicines from bills,addpro where bills.BillNo=" + bno, Program.con);
DataTable t = new DataTable();
a.Fill(t);
PAge = Convert.ToString(t.Rows[3]);
Amount = Convert.ToString(t.Rows[8]);
PName = Convert.ToString(t.Rows[1]);
DName = Convert.ToString(t.Rows[2]);
Psex = Convert.ToString(t.Rows[4]);
PPhoneNo = Convert.ToString(t.Rows[5]);
PAddress = Convert.ToString(t.Rows[6]);
Treatment = Convert.ToString(t.Rows[7]);
Teethno = Convert.ToString(t.Rows[9]);
frmPrint sa=new frmPrint();
sa.start(bno, PAge, Amount, PName, DName, Psex, PPhoneNo, PAddress, Treatment, Teethno);
当我尝试加载下一个显示标签DataTable
上的数据的表单时,会出现以下错误: -
位置3没有排。
答案 0 :(得分:0)
您正在访问每个字段的不同行。 您应该访问第一行,然后访问不同的列:
t.Rows[0].Columns[0]
t.Rows[0].Columns[1]
t.Rows[0].Columns[2]
t.Rows[0].Columns[3]
...
答案 1 :(得分:0)
好像你需要使用[Columns]
DataTable t = new DataTable();
a.Fill(t);
PAge = Convert.ToString(t.Rows[0]["ColumnsName"]);
// and so on
答案 2 :(得分:0)
你正在使用Row而你想要使用Column:
foreach(DataRow row in t.Rows)
{
PAge = row["PAge"].ToString();
Amount = row["Amount"].ToString();
PName = row["PName"].ToString();
DName = row["DName"].ToString();
Psex = row["PSex"].ToString();
PPhoneNo = row["PPhoneNo"].ToString();
PAddress = row["PAddress"].ToString();
Treatment = row["Treatment"].ToString();
Teethno = row["Teethno"].ToString();
}
使用名称,而不是使用数字来标识列。如果查询的顺序因任何原因而发生变化,则不会对您的代码产生影响。如果您使用了序号,那么您需要更改行[n]代码,因为订单会发生变化。