Avatar billede fredz Nybegynder
25. maj 2006 - 12:56 Der er 3 kommentarer

Indlæse teststreng til MS SQL database direkte fra Page_Load

Data (en tekststreng) kommer fra en ekstern klientapplikation. Det modtages fint i page_load i asp.net, idet jeg sagtens kan fortsætte koden nedenfor og skrive indholdet i strmContents til en fil og så indlæse det i en komponent på en anden webform. Men hvordan ser koden ud, hvis jeg direkte fra Page_Load vil indsætte indholdet af strmContents i en MS SQL database?
Har forsøgt på mange måder, men der indsættes ikke noget. strmContents er måske pludselig blevet tom pga en eller anden sikkerhedsforanstaltning i asp? Desuden virker det som om asp.net vil have, at brugeren først skal klikke på en knap (på en webform), hvor indsættelseskoden læses fra, men jeg vil have data til at gå direkte fra Page_Load til indsættelse i en tabel i MS SQL. Kan det lade sig gøre?


private void Page_Load(object sender, System.EventArgs e)
{
           
  Stream str2 = Request.InputStream;

  // Find number of bytes in stream.
  int strLen = (int)str2.Length;

  // Create a byte array to hold stream.
  byte[] bArr = new byte[strLen];

  // Read stream into byte array.
  str2.Read(bArr,0,strLen);

  // Convert byte array to a text string.
  string strmContents="";
  for(int i = 0; i < strLen; i++)
      strmContents = strmContents + (Char)bArr[i];

  // osv???, dvs her inserte i database ??
Avatar billede snepnet Nybegynder
26. maj 2006 - 11:49 #1
Du kan proppe data i din database hvorfra du vil, så det er ikke der du løber ind i problemer.
Kan du ikke vise den kode du bruger til at smide det i databasen - og som ikke medfører at du får noget derned?
Mvh
Avatar billede fredz Nybegynder
26. maj 2006 - 16:36 #2
ja, for jeg prøvede at lave et nyt projekt med samme kode og så virkede det. ASP.NET kan tilsyneladende lave en masse junk, hvis man eksperimenterer for meget. Nu er der så kun et andet mindre problem: Jeg får indholdet af strmContents skrevet ud korrekt, men der laves også en ekstra række, hvor der kun er data i første felt, men ikke noget (strmContents) i andet felt. Hvordan slipper man af med den ekstra række?

Her er koden, som jeg synes ser helt standard ud:

public class Resultat : System.Web.UI.Page
  {
    protected System.Data.SqlClient.SqlConnection sqlConnection1;
    protected SqlCommand cmd;
    protected System.Web.UI.WebControls.Label Label1;
   
    private void Page_Load(object sender, System.EventArgs e)
      {
    Stream str2 = Request.InputStream;
    int strLen = (int)str2.Length;

    byte[] bArr = new byte[strLen];

    str2.Read(bArr,0,strLen);

    string strmContents = "";
    for(int i = 0; i < strLen; i++)
      strmContents = strmContents + (Char)bArr[i];
           
    if(!IsPostBack)
      {
        cmd = new SqlCommand("insert into result_tmp values
          ('OOPS_Final','"+strmContents+"')",sqlConnection1);           
        sqlConnection1.Open();
        cmd.ExecuteNonQuery();
        sqlConnection1.Close();
      }
               
      }

...mvh
Avatar billede fredz Nybegynder
26. maj 2006 - 22:41 #3
Jeg fandt selv årsagen til problemet. Tak til snepnet for forsøg på at hjælp. Det oplysningen, at man også kan inserte til ms sql inde fra pageload.
Lukker.
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester