无法从C#中的数据库中检索数据

时间:2013-04-13 08:04:14

标签: c# sql-server ado.net

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

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

获取数据的代码是:

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没有排。

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]代码,因为订单会发生变化。