CatZMedlem sedan jan. 20022 440 inlägg 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[]?
CatZMedlem sedan jan. 20022 440 inlägg 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 :)
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.
CatZMedlem sedan jan. 20022 440 inlägg 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.
CatZMedlem sedan jan. 20022 440 inlägg Ä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 :)
CatZMedlem sedan jan. 20022 440 inlägg 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;