webForumDet fria alternativet

problem att spara byte till object

.NETur .NET

5 svar · 968 visningar · startad av CatZ

Medlem sedan jan. 20022 440 inlägg
Frågan#1

Jag har följande kod för att styra upp mina entiteter

public byte[] File
{
	get
	{
		return File;
	}
	set
	{
		File = value;
	}
}

Binder på följande vis till entiteterna

ResultsList resultsList = new ResultsList();
for (int i = 0; i < dt.Rows.Count; i++)
{

	//Sets all the values in the columns of this specific row
	resultsList.ID = id;
	resultsList.FileName = (string)dt.Rows[i]["FileName"];
	resultsList.File = (byte[])(dt.Rows[i]["File"]);
	resultsList.FileSize = (int)dt.Rows[i]["FileSize"];
	resultsList.FileContentType = (string)dt.Rows[i]["FileContentType"];
	//Adds the row to the collection list
}//End for
return resultsList;

Men så fort jag kommer till

File = value;

så slutar den stega igenom och jag får nåt meddelande om Unhandled StackOverflowException. Gör jag något fel som försöker hämta ett Blob object från en access databas och skriva till en byte[]?

Medlem sedan jan. 20022 440 inlägg
#2

Gjorde om lite och försöker med en dbReader istället

byte[] b = new Byte[(dbReader.GetBytes(1, 0, null, 0, int.MaxValue))];

och får då att

visual studio 2008 skrev:

System.InvalidCastException was unhandled by user code
Message="Den angivna omvandlingen är inte giltig."
Source="System.Data"
StackTrace:
vid System.Data.OleDb.ColumnBinding.ValueByteArray()
vid System.Data.OleDb.OleDbDataReader.GetBytes(Int32 ordinal, Int64 dataIndex, Byte[] buffer, Int32 bufferIndex, Int32 length)
vid ResultsDAL.GetPlayedResultByID(Int32 id) i c:\Users\CatZ\Documents\Visual Studio 2008\WebSites\WexioBridgen\App_Code\DAL\ResultsDAL.cs:rad 81
vid ResultsBLL.GetPlayedResultByID(Int32 id) i c:\Users\CatZ\Documents\Visual Studio 2008\WebSites\WexioBridgen\App_Code\BLL\ResultsBLL.cs:rad 30
vid Results.lbtnGetResult_Command(Object sender, CommandEventArgs e) i c:\Users\CatZ\Documents\Visual Studio 2008\WebSites\WexioBridgen\Results.aspx.cs:rad 32
vid System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e)
vid System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument)
vid System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
vid System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
vid System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
vid System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException:

Inte tusan hittar jag någon direkt bra läsning heller :)

Medlem sedan apr. 20007 588 inlägg
#3

CatZ skrev:

byte[] b = new Byte[(dbReader.GetBytes(1, 0, null, 0, int.MaxValue))];

Exakt vad är det du försöker åstadkomma här? Du försöker skapa en ny byte-array med storleken hämtad från resultatet av metodanropet dbReader.GetBytes(...), det kan ju inte vara riktigt rätt.

Det måste väl finnas API-dokumentation och verktygsstöd även för .NET-utveckling, det är väl bara att läsa innantill hur metoden fungerar.

Medlem sedan jan. 20022 440 inlägg
#4

Du kanske kan läsa ut nåt av följande länk http://msdn2.microsoft.com/en-us/library/system.data.oledb.oledbdatareader.getbytes.aspx därför att du är bättre än mig på .net jag kan det iaf inte.

/RED
Några andra artiklar eller exempel hittar jag inte. Ska äta lite gröt och dricka kaffe så kanske det går bättre sen.

Medlem sedan jan. 20022 440 inlägg
#5

ÄNTLIGEN! :e MSDN är så stort att det är svårt att hitta rätt artikel hehe. lösningen på mitt problem finns här http://msdn2.microsoft.com/en-us/library/87z0hy49(VS.90).aspx

Har inte hunnit göra färdigt men den artikeln är bra nog som lösning :)

Medlem sedan jan. 20022 440 inlägg
#6

Såhär blev det då... Jag hade använt stort a istället för litet.

result.ID = id;
result.FileName = dbReader["FileName"] as string;
result.File = dbReader["File"] as byte[];
result.FileSize = result.File.Length;
result.FileContentType = dbReader["FileContentType"] as string;
133 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)