请耐心等待,因为我对此很陌生。
我正在尝试使用 DataReader 对象循环访问记录集,并在每次迭代时执行某些操作,但它似乎没有传递第一条记录。我基本上想查看每条记录,然后根据记录集中列中的数据将特定图像分配给指定位置。
我正在使用Visual Studio 2019并使用OleDataReader来读取Access表。我让命令对象正常工作,只是似乎无法传递第一条记录。
这是我类中的方法定义
//Giving string variable names to the virtual paths of the images
private string whitePallet = "~/images/White.jpg";
private string redPallet = "~/images/Red.jpg";
private string bluePallet = "~/images/Blue.jpg";
private string blackPallet = "~/images/Black.jpg";
private string greenPallet = "~/images/Green.jpg";
private string racetrack = "~/images/Racetrack.jpeg";
public string Racetrack { get => racetrack; set => racetrack = value; }
public string OpenConnection(string connectString, String selectString)
{
using (OleDbConnection cn = new OleDbConnection(connectString))
{
cn.Open(); //Open the connection.
OleDbCommand cmd = new OleDbCommand(selectString, cn);
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
string pallet;
if (reader["Status"].ToString() == "Blocked Location")
{
pallet = blackPallet;
return pallet;
}
if (reader["Status"].ToString() == "AP Purge")
{
pallet = redPallet;
return pallet;
}
if (reader["Status"].ToString() == "Open")
{
pallet = whitePallet;
return pallet;
}
if (reader["Status"].ToString() == "Order Complete")
{
pallet = greenPallet;
return pallet;
}
if (reader["Status"].ToString() == "Pallet Full")
{
pallet = bluePallet;
return pallet;
}
}
//Close the reader and the related connection.
reader.Close();
return null;
}
}
这是类/方法
的实例化'''
Definitions defs = new Definitions();
Image imgRacetrack = Image.FromFile(Server.MapPath(defs.Racetrack));
//Creating image panel to draw upon using w/h of racetrack image
Image img = new Bitmap(imgRacetrack.Width, imgRacetrack.Height);
using (Graphics gr = Graphics.FromImage(img))
{
//Background image
gr.DrawImage(imgRacetrack, new Point(0, 0));
//Defining the points on the left side:
Point p1 = new Point(125, 50);
Image imgPallet = Image.FromFile(Server.MapPath(defs.OpenConnection(connectString,selectString)));
gr.DrawImage(imgPallet, p1);
Point p2 = new Point(125, 100);
Image imgPallet2 = enter code hereImage.FromFile(Server.MapPath(defs.OpenConnection(connectString, selectString)));
gr.DrawImage(imgPallet2, p2);
}
我希望遍历每条记录,然后将具有正确颜色的图像放置在正确的位置,但它仅根据第一条记录为每个点/位置提供结果。我的逻辑怎么了??
您声明托盘string pallet;
然后有几个if
语句,您可以在其中return pallet;
.
首先,你想返回一个字符串,但你正在做
pallet = blackPallet; // pallet will not be a string.
pallet = "blackPallet"; // pallet will be a string.
其次,当你说return...
时,你离开了方法;在那之后你不再继续,你说你已经完成了 - 返回这个值并停止。
因此,您需要从每一行读取值并存储它们,然后返回值的集合。然后,您可以遍历集合并根据需要插入每个值。
这是一种方式。我没有完全详细地研究你所拥有的东西,所以可能有更好的方法。希望现在就足够了。