0

我有一个应用程序,它无法从数据库中获取此特定表单的数据,而其他表单工作正常。

我正在使用此表单从数据库中获取数据,然后将该数据显示到另一个表单的标签上。

获取数据的代码是:

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 处没有行。

4

3 回答 3

0

您正在访问每个字段的不同行。您应该访问第一行,然后访问不同的列:

t.Rows[0].Columns[0]
t.Rows[0].Columns[1]
t.Rows[0].Columns[2]
t.Rows[0].Columns[3]
...
于 2013-04-13T08:06:51.907 回答
0

好像你需要使用[Columns]

DataTable t = new DataTable();
a.Fill(t);
PAge = Convert.ToString(t.Rows[0]["ColumnsName"]);  
// and so on
于 2013-04-13T08:09:06.067 回答
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();
}

不要使用数字来标识列,而是使用名称。如果查询的顺序因任何原因而改变,这不会对您的代码产生影响。如果您使用序数,那么您也需要更改您的 row[n] 代码,因为顺序会改变。

于 2013-04-13T08:09:10.810 回答