gpt4 book ai didi

c# - 使用 ExecuteReader 遍历行

转载 作者:太空宇宙 更新时间:2023-11-03 17:24:44 26 4
gpt4 key购买 nike

我很困惑,我正在尝试从数据库中填充 5 个文本框,但并非所有 5 个文本框都会始终有数据。

例子:

编号 |元素编号 | QType

1 | 10 | 2盒

2 | 10 | 6盒

3 | 11 | 1 例

在此示例中,它将用 2 个框填充 QuantityType1TxtBox,用 6 个框填充 QuantityType2TxtBox,同时将其他三个文本框留空。

当我尝试运行此代码时出现以下错误:Index was outside the bounds of the array.

此错误发生在这一行:QuantityType2TxtBox.Text = rdr.GetString(1);

SqlCommand cmd = new SqlCommand(@"SELECT QType FROM InventoryQType
WHERE ItemID = '" + itemID + "'", conn);
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();

while (rdr.Read())
{
QuantityType1TxtBox.Text = rdr.GetString(0);
QuantityType2TxtBox.Text = rdr.GetString(1);
QuantityType3TxtBox.Text = rdr.GetString(2);
QuantityType4TxtBox.Text = rdr.GetString(3);
QuantityType5TxtBox.Text = rdr.GetString(4);
}
rdr.Close();

最佳答案

我不确定我的 switch 语句是否是执行此操作的正确方法,但我认为这段代码的其余部分对于向您展示参数和 using 语句很有用。

string sql = @"SELECT QType FROM InventoryQType WHERE ItemID=@id";
using (SqlConnection conn = new SqlConnection("[put your connection string here, or reference to web.config]")) {
conn.Open();
using (SqlCommand cmd = new SqlCommand(sql, conn)) {
cmd.Parameters.Add("@id", System.Data.SqlDbType.VarChar).Value = itemID;
SqlDataReader rdr = cmd.ExecuteReader();
int loop = 1;
while (rdr.Read()) {
switch(loop){
case 1:
QuantityType1TxtBox.Text = (string)rdr["QType"];
break;
case 2:
QuantityType2TxtBox.Text = (string)rdr["QType"];
break;
case 3:
QuantityType3TxtBox.Text = (string)rdr["QType"];
break;
case 4:
QuantityType4TxtBox.Text = (string)rdr["QType"];
break;
case 5:
QuantityType5TxtBox.Text = (string)rdr["QType"];
break;
default:
break;
}
loop++;
}
}
conn.Close();
}

另外请注意,您的 itemID 在您的示例中似乎是一个 varchar。我假设它实际上是一个 int,因此如果是这样,您需要将参数的“VarChar”部分更改为“Int”。

关于c# - 使用 ExecuteReader 遍历行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22048290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com